【问题标题】:Java REGEX Operator precedenceJava REGEX 运算符优先级
【发布时间】:2012-02-20 06:14:39
【问题描述】:

我有几个字符串:

john doe happy
george smith is happy

这是我的正则表达式:

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

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

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

现在,“george smith is happy”总是匹配“george smith is”和“happy”......当我真的希望它是“george smith”和“is happy”时

如何让“开心”优先于“开心”?

【问题讨论】:

    标签: java regex


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 2012-12-13
      • 2021-10-25
      • 2011-01-09
      • 2011-12-28
      • 1970-01-01
      • 2011-07-07
      相关资源
      最近更新 更多