有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java正则表达式运算符优先级

我有几条线索:

john doe happy
george smith is happy

下面是我的正则表达式:

([a-zA-Z ]+) (is happy|happy)

我需要第一组的名字总是像“john doe”或“george smith”

我需要第二组总是“快乐”或“很快乐”

现在,“乔治·史密斯快乐”总是与“乔治·史密斯快乐”和“快乐”相匹配。。。当我真的希望它是“乔治·史密斯”和“快乐”

我如何使“是快乐的”优先于“快乐的”


共 (1) 个答案

  1. # 1 楼答案

    +是贪婪的,这意味着它将匹配尽可能多的字符,因此您永远不会在编写时将is happy与正则表达式匹配。您可以通过将其更改为+?将其更改为惰性匹配,这将匹配尽可能少的字符(仍然是一个或多个):

    ([a-zA-Z ]+?) (is happy|happy)