我有几个字符串:
john doe happy
george smith is happy
这是我的正则表达式:
([a-zA-Z ]+) (is happy|happy)
我需要第1组始终是“ john doe”或“ george smith”之类的名字
我需要第2组始终保持“快乐”或“快乐”
现在,“乔治·史密斯很高兴”总是与“乔治·史密斯很高兴”和“快乐”相匹配……当我真的希望它成为“乔治·史密斯”很“高兴”时
如何使“快乐”优先于“快乐”?
最佳答案
+
是贪婪的,这意味着它将匹配尽可能多的字符,因此在编写时,您将永远不会将is happy
与正则表达式匹配。您可以通过将其更改为+?
来将其更改为惰性匹配,该匹配尽可能少地匹配字符(仍然是一个或多个):
([a-zA-Z ]+?) (is happy|happy)
关于java - Java REGEX运算符优先级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9356920/