正则表达式替换组(java、python、perl、awk)
我正在寻找一种基于正则表达式和分组进行替换的方法,但这只会替换该组。例如,如果我有:
string = "xxxab yyyyab zzzab xxab"
我想调用类似:
replace_all_group(string, /xx(ab)/,"AB")
并获得:
string = "xxxAB yyyyab zzzab xxAB"
java、perl、python 和 awk 中的任何“短”解决方案都是非常受欢迎的!到目前为止,我已经能够使用index_of等来实现这一点,但我希望那里有某种单行:)
I'm looking for a way to do a replace based on a regex with grouping but that only would replace the group. For instance, if I have:
string = "xxxab yyyyab zzzab xxab"
I want to call something like:
replace_all_group(string, /xx(ab)/,"AB")
and obtain:
string = "xxxAB yyyyab zzzab xxAB"
any "short" solution in java, perl, python and awk is very welcome! so far I was able to achieve that using index_of and the like, but I'm hoping there's some kind of one-liner somewhere out there :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您想要的是积极的lookbehind断言。
仅当
ab
前面有xx
时才匹配并替换它。您可以使用以下正则表达式来匹配这样的
ab
:Perl 中的工作示例
Java 中的工作示例
What you want is a positive lookbehind assertion.
Match and replace
ab
only if it is preceded byxx
.You can use the following regex to match such an
ab
:Working example in Perl
Working example in Java
如果字符串不会变得更复杂:
或者 @codaddict 答案的 python 版本:
If the string won't get more complicated:
Or a python version of @codaddict's answer: