【发布时间】:2016-09-26 22:08:01
【问题描述】:
鉴于以下情况:
"John Smith"
"John Smith (123)"
"John Smith (123) (456)"
我想捕捉:
"John Smith"
"John Smith", "123"
"John Smith (123)", "456"
什么 Java 正则表达式允许我这样做?
我试过(.+)\s\((\d+)\)$,它适用于“John Smith (123)”和“John Smith (123) (456)”,但不适用于“John Smith”。如何更改正则表达式以使其也适用于第一个输入?
【问题讨论】:
-
你也可以贪心
^([^(\r\n]+)(?:\((.*)\))? -
@revo 似乎不起作用。在 "John Smith (123) (456)" 中,它捕获了 ""123) (456",这不是我想要的。
-
是的,你是对的:
^([^(\r\n]+$|.*(?:\((.*)\))) -
那也行不通。在“John Smith (123)”中,我想捕捉“John Smith”和“123”。
-
那么你需要将
.*括在括号中。