我希望这个正则表达式
([A-Z]+)$
将选择此示例中的最后一次出现:
AB.012.00.022ABC-1
AB.013.00.022AB-1
AB.014.00.022ABAB-1
但我没有比赛。如果我删除了' $'我明白了:
AB and ABC
AB and AB
AB and ABAB
我只想要最后一次出现(ABC / AB / ABAB)。 " AB"不应该返回匹配。怎么忽略它?像(^ ??。)
之类的东西答案 0 :(得分:3)
要获得最后一次出现,只需使用正向预测即可告诉正则表达式引擎匹配最后的最终符号:
([A-Z]+)(?=-\d+$)
你的正则表达式只是在一个字符串的末尾查找从A到Z的大写字母,但是AB.012.00.022ABC-1
,AB.013.00.022AB-1
和AB.014.00.022ABAB-1
的结尾都没有大写字母。 (它们都以-1
结尾)。如果您的字符串最后都有-1
,则可以使用(?=-1$)
预测。
请参阅demo
答案 1 :(得分:1)
要匹配最后一次出现的任何内容,您可以使用与后面的字符串匹配的负前瞻。这看起来像[A-Z]+(?!.*[A-Z])
,其中[A-Z]
将替换为您想要匹配的任何内容。
答案 2 :(得分:1)