正则表达式前缀,只捕获奇数个实例?

时间:2014-07-21 17:18:31

标签: java regex prefix

我想在两个百分比“%”内捕获所有互斥的字符串。如果它在两个百分比之间,它将在我的解析过程中被标记为替换变量。

所以,如果我有这个输入字符串

TLA%HRN%767%BRN%DFS

它应该只返回“HRN”和“BRN”,而不是“HRN”,“767”和“BRN”。

我不想要767,因为它会窃取HRN和BRN中的百分比字符。我想我只想匹配前缀中有奇数个百分比字符的地方。

这是我正在进行的正则表达式工作。它捕获了三个实例,而不仅仅是我想要的两个实例。

(?<=\b[A-Za-z1-9]+%).+?(?=%)

如何在前缀中仅捕获奇数个百分比字符?

1 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式进行匹配:

%[^%]+%

原因之所以有效,是因为% %HRN% %消费后767无法返回{{1}}。

Regex Demo