regex 在正则表达式中捕获可选组的歧义性质[重复]

xmjla07d  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(121)

此问题已在此处有答案

My regular expression matches too much. How can I tell it to match the smallest possible pattern? [duplicate](4个答案)
My regex is matching too much. How do I make it stop? [duplicate](4个答案)
Regular expression to stop at first match(9个回答)
上个月关门了。
考虑输入字符串“A-B-Z”。
Regex ([A-Z-]*)(-Z)?匹配“A-B-Z”作为组1,不匹配任何作为组2。我希望“A-B”和“-Z”,但似乎第二组的可选性阻止了这种情况的发生。如果我将最后一个组设置为非可选的,如([A-Z-]*)(-Z),则组1为“A-B”,组2为“-Z”。但是我不知道我的输入是否会有那个可选的部分。如何使它成为可选的,同时仍然允许它在提供时捕获?
此外,([A-Z]*)(-Z)?(第一组中不允许使用“-”)可以像“ABC-Z”这样的输入一样工作。第一组中的“-”的可能性似乎产生了歧义。

ylamdve6

ylamdve61#

忘记了ChatGPT是一个东西。它可以解决这个问题:)
([A-Z-]*?)(-Z)。“*”?“在第一个捕获组意味着不贪婪,所以它不会消耗我想在第二个组中的部分。

相关问题