【发布时间】:2018-11-04 03:29:13
【问题描述】:
需要在字符串中查找“变量”。表示变量的是 %[/w]+%,关键是字符串中可以有多个变量:
%ABC%
%ABC%-%RED%
Lorem ipsum %GeT% sit amet, %% consectetur %QW23% elit.
在第三个示例中,不应找到 %%,它将被替换为单个 %。 #[\w+-]+# 之类的东西不起作用,因为它无法确定在第二行中它是 %ABC% 和 %RED%,而是 %-%。我的印象是需要同时使用组和反向引用,但我找不到任何好的例子来解释如何在 Java 中做到这一点。
人们正在寻求一些问题的答案,所以你去吧:
我期望的最终输出到底是什么?好吧,正如主题所暗示的 %ABC% 是在其他地方定义的“变量”,最终目标是“找到变量并用正确的值替换它”。正则表达式的目标是查找字符串中的所有“变量”。
所以,内存中的某处有一张地图:
ABC = "mike"
RED = "Red Storm"
GeT = "hometown"
QW23 = "Quick and easy"
(旁注:如果键需要在名称周围有 %,也可以)
正则表达式的目标是“找到”变量,因此在第一个字符串中它将找到 ABC(或 %ABC%),以便代码和查找 ABC 以确定正确的值是 mike,等等on... 这是给定字符串的所需输出:
mike
mike-Red Storm
Lorem ipsum hometown sit amet, % consectetur Quick and easy elit.
我并不期望 reg 表达式实际执行完全替换,而只是查找片段以便其他代码执行替换。我也不指望它将 %% 转换为 %,但不要管它,以便事后简单搜索 %% 可以将其转换为 %。
【问题讨论】:
-
那么%%可以嵌套吗?如果是这种情况,正则表达式无法处理,您将需要一个解析器。
-
我看不到
%\w+%哪里没有 match as expected. -
为什么要使用井号
#而需要百分比%? -
这个正则表达式
%(\w+)%有什么问题?
标签: java regex string regex-lookarounds regex-group