此问题已在此处有答案:
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”这样的输入一样工作。第一组中的“-”的可能性似乎产生了歧义。
1条答案
按热度按时间ylamdve61#
忘记了ChatGPT是一个东西。它可以解决这个问题:)
([A-Z-]*?)(-Z)
。“*”?“在第一个捕获组意味着不贪婪,所以它不会消耗我想在第二个组中的部分。