Java正则表达式与括号匹配

时间:2014-03-11 19:43:11

标签: java regex

我正在尝试使用正则表达式来查找与以下模式匹配的字符串:

(someNumber - someNumber)包含括号。

我试过了:

"\\([1-9]*-[1-9]*\\)"

但这似乎不起作用。

我还需要匹配:

字母W或L后跟(someNumber - someNumber)括号括起来。

我尝试使用上面相同的模式,略微修改,但再次,没有运气:

"W|L \\([1-9]*-[1-9]*\\)"

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

在括号中包括W | L:

(W|L)

如果要在减号前后添加空格字符,请在前后添加\ s或空格 -

"((W|L)\\s)?\\([1-9]*\\s-\\s[1-9]*\\)"

如果您已经知道至少有一位数,请使用+代替*,因为*匹配零或更多,而+匹配1或更多。

上面给出的模式与前面的W或L匹配和不匹配。 这是一个模式,在-周围有和没有空格,前面有或没有W或L。此外,它还会捕获包含0的数字,这些数字会在原始正则表达式中排除。

"((W|L)\\s)?\\(\\d+\\s?-\\s?\\d+\\)"

答案 1 :(得分:0)

你可以试试这个:
“(W | L)\\ S * \\(\\ d + - \\ d + \\)”

答案 2 :(得分:0)

除了blueygh2的回答,如果数字包含零,你的正则表达式将失败。我的猜测是你要避免使用前导零,在这种情况下使用[1-9]\d*(或[1-9][0-9]*)。如果您希望允许数字等于0,但要避免使用前导零,请执行([1-9]\d*|0)