我有几个字符串:

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/

10-10 12:34