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

Java 正则表达式前缀,仅捕获奇数个实例?,java,regex,prefix,Java,Regex,Prefix,我想捕获两个百分比“%”内出现的所有互斥字符串。如果它介于两个百分比之间,它将被标记为变量,以便在我的解析过程中替换 如果我有这个输入字符串 TLA%HRN%767%BRN%DFS 它应该只返回“HRN”和“BRN”,而不是“HRN”、“767”和“BRN” 我不想要767,因为它从HRN和BRN中窃取了百分比字符。我想我只想匹配前缀中有奇数个百分比字符的位置 这是我正在进行的正则表达式工作。它捕获了三个实例,而不仅仅是我想要的两个 (?<=\b[A-Za-z1-9]+%).+?(?=%

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

如果我有这个输入字符串

TLA%HRN%767%BRN%DFS
它应该只返回“HRN”和“BRN”,而不是“HRN”、“767”和“BRN”

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

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

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

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

%[^%]+%
之所以有效,是因为一旦
%
%HRN%
中被消耗,后续
%
无法返回
767


我没有看到错误。当我使用regex测试时,
%.*?%
只捕获“HRN”和“BRN”。示例:哇,我把那个复杂化了,不是我。是的,但有时我们都会这样做。简短而甜蜜,+1:)