I was hoping this regex
([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." 不应该匹配。如何忽略它?类似 (^??.) 的东西。
I was hoping this regex
([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
([A-Z]+)(?=-\d+$)
AB.012.00.022ABC-1
、AB.013.00.022AB-1
和AB.014.00.022ABAB-1
都没有以大写字母结尾(它们都以-1
结尾)。如果你的字符串都以-1
结尾,你可以使用(?=-1$)
预查。请参见演示。
[A-Z]+(?!.*[A-Z])
,其中[A-Z]
被替换为您想要匹配的任何内容。
([A-Z]+)(?=[^A-Z]*$)
- 它也会按照你的期望工作,因为它允许在结尾之前没有 A 到 Z 的字母。请参见 https://regex101.com/r/lY5jO0/2。 - Wiktor StribiżewAB.
,则需要捕获其后面的内容并仅使用该捕获组:^AB\.(.*-\d)$
。移动括号以获得所需的输出。如果您提供了精确的示例输入和输出 和 使用的编程语言,那么可能更容易向您展示一种解决方案。 - Wiktor Stribiżew