我想捕获两个百分比“%”内所有相互排斥的字符串。如果它在两个百分比之间,它将在我的解析过程中标记为要替换的变量。
所以如果我有这个输入字符串
TLA%HRN%767%BRN%DFS
它仅应返回“ HRN”和“ BRN”,而不应返回“ HRN”,“ 767”和“ BRN”。
我不想要767,因为它会从HRN和BRN窃取百分比字符。我想我只想匹配前缀中存在奇数个百分比字符的位置。
这是我正在进行的正则表达式工作。它捕获了三个实例,而不仅仅是我想要的两个实例。
(?<=\b[A-Za-z1-9]+%).+?(?=%)
如何仅捕获前缀中出现的奇数个百分比字符?
最佳答案
您可以使用此正则表达式进行匹配:
%[^%]+%
之所以起作用,是因为一旦
%
被消耗在%HRN%
中,尾随的%
就无法返回767
。Regex Demo