替换groovy中的捕获组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换groovy中的捕获组相关的知识,希望对你有一定的参考价值。
我是groovy的新手并且一直在尝试这个
我的目标字符串可以从哪里开始,然后可以跟随任意数量的。(点字符)和一个单词。我需要用_(下划线)替换所有。(点字符)
任何不以何处或不应该被替换的东西
示例字符串是
hey where.is.the book on.brown.table
hey there.is.a.boy.in.the city Delhi
hey here.is.the.boy living next door
预期的输出是
hey where_is_the book on.brown.table
hey there_is_a_boy_in_the city Delhi
hey here.is.the.boy living next door
我能够匹配确切的模式。使用/(where|there).((w+)(.))+/
,但是当我使用replaceAll
时,我的结果不正确。
答案
您可以使用
/(G(?!A)w+|(?:where|there))./
或者,如果您只需要处理这两个字:
/(G(?!A)w+|[wt]here)./
替换为$1_
。见regex demo。
细节
(G(?!A)w+|(?:where|there))
- 第1组捕获:G(?!A)w+|
- 上一场比赛的结束(G(?!A)
),然后是1+字的字符(w+
),或者(?:where|there)
-where
或there
整个单词(如果你只需要处理这两个单词,你甚至可以把它写成[tw]here
).
- 一个点。
String s = "hey where.is.the book on.brown.table
hey there.is.a.boy.in.the city Delhi
hey here.is.the.boy living next door"
print s.replaceAll(/(G(?!A)w+|(?:where|there))./, '$1_')
输出:
hey where_is_the book on.brown.table
hey there_is_a_boy_in_the city Delhi
hey here.is.the.boy living next door
以上是关于替换groovy中的捕获组的主要内容,如果未能解决你的问题,请参考以下文章