假设我有一个句子,我想根据某些标记的外观来匹配(并最终替换,但这不是问题的一部分)它们:The quick brown fox {NUM} jumped over {211NUM} the lazy dog {NUM}. The Quick brown fox {NUM10} jumped over the lazy dog.
我想根据#
中的逻辑和数字替换{NUM}
、{#NUM}
和{NUM#}
部分,然后将它们作为单个字符串放回一起。
我想出了(.*?)({NUM}|{\d*NUM}|{NUM\d*})
这将获得我想要的捕获,但我似乎不知道如何获得最后一次匹配后句子的剩余部分,即jumped over the lazy dog.
我想也许在最后添加(.*?)
可以做到这一点,但事实并非如此。以下是我的工作:
https://regex101.com/r/HpIcAa/1
2条答案
按热度按时间8wtpewkr1#
不需要垃圾回收器与拆分/合并字符串。替换工作良好,没有内存峰值,快速,接受函数作为参数了:
输出:
juud5qan2#
您可以尝试使用以下正则表达式模式只匹配您的关键字:
(?<g1>{NUM})|(?<g2>{\d*NUM})|(?<g3>{NUM\d*})
然后使用Regex.Replace函数根据您的逻辑替换关键字。
参见here演示