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

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

TLA%HRN%767%BRN%DFS


它仅应返回“ HRN”和“ BRN”,而不应返回“ HRN”,“ 767”和“ BRN”。

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

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

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


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

最佳答案

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

%[^%]+%


之所以起作用,是因为一旦%被消耗在%HRN%中,尾随的%就无法返回767

Regex Demo

07-24 09:34