Gar*_*gos 5 regex eclipse replace
someText
1
2
3
4
moreText
Run Code Online (Sandbox Code Playgroud)
我想在每个数字之前添加一个前缀.
但是使用(\w+\R)(\d+\R)+(\w+)
并且\1prefix\2\3
只会在最后一位数字前加上并删除其他数字.
有没有办法用一个正则表达式做或者我应该在旁边写一个脚本?
你的正则表达式的问题是使用贪婪匹配(\d+\R)+
,特别是最后一次+
.这就是说,"尽可能多次匹配这个群体,只要它不会导致错过匹配".因此,对于你的文本,它会吞噬1,2,3和4,然后再不再吞噬并将最后一个匹配放入第二个捕获组.显然,正则表达式引擎的性质无法表达可变组,无论如何你会如何解决它们?所以简短的回答,我认为正则表达式是完全自动化过程的错误工具,你必须编写一个脚本.
但是,对于一个稍微不那么自动化的过程仍然包含您的周围文本,您可以尝试
find: (\w+\R)((?:\d+\R)+)(\w+)
replace: \1prefix\2\3
Run Code Online (Sandbox Code Playgroud)
我们将第二组加上它的贪婪修饰符包装在一组额外的捕获parens中,并将实际匹配的文本包含在非捕获组中.现在,我们在他们自己的组中拥有完整的数字集,并可以将前缀添加到第一个.这有趣的副作用是,第一个数字然后匹配第一个组(\w+\R)
,如果再次运行查找/替换,它会命中行中的下一个数字,直到它不再匹配.
通过这种方式,您应该能够至少只搜索您有兴趣添加此前缀的区域来运行您的文件,并且它不应该花费几乎与查找每个文件中的每个数字一样长的时间.
归档时间: |
|
查看次数: |
1963 次 |
最近记录: |