带括号的Java正则表达式匹配
我尝试使用正则表达式来查找与以下模式匹配的字符串: (someNumber-someNumber)包含括号 我试过:带括号的Java正则表达式匹配,java,regex,Java,Regex,我尝试使用正则表达式来查找与以下模式匹配的字符串: (someNumber-someNumber)包含括号 我试过: "\\([1-9]*-[1-9]*\\)" 但这似乎不起作用 我还需要匹配: 字母W或L后跟(someNumber-someNumber)和括号 我尝试使用上面相同的模式,稍作修改,但同样没有运气: "W|L \\([1-9]*-[1-9]*\\)" 任何帮助都将不胜感激在括号中包括W | L: (W|L) 如果要在减号前后包含空格字符,请在减号前后添加\s或空格- "((
"\\([1-9]*-[1-9]*\\)"
但这似乎不起作用
我还需要匹配:
字母W或L后跟(someNumber-someNumber)和括号
我尝试使用上面相同的模式,稍作修改,但同样没有运气:
"W|L \\([1-9]*-[1-9]*\\)"
任何帮助都将不胜感激在括号中包括W | L:
(W|L)
如果要在减号前后包含空格字符,请在减号前后添加\s或空格-
"((W|L)\\s)?\\([1-9]*\\s-\\s[1-9]*\\)"
如果您已经知道至少有一个数字,请使用+
而不是*
,因为*
匹配零个或多个,而+
匹配一个或多个
上面给出的图案与前面有或没有W或L的图案相匹配。
这是一个模式,它与-
周围有无空格以及前面有无W或L相匹配。此外,它还捕获包含0
的数字,您在原始正则表达式中排除了这些数字
"((W|L)\\s)?\\(\\d+\\s?-\\s?\\d+\\)"
您可以试试这个:“(W|L)\\s*\(\\d+-\\d+\\)”进一步了解blueygh2的答案,如果数字包含零,您的正则表达式将失败。我猜您希望避免前导零,在这种情况下使用
[1-9]\d*
(或[1-9][0-9]*
)。如果希望允许数字等于0
,但避免前导零,请在输入“W(10-5)”时执行([1-9]\d*| 0)
,我只返回匹配的W。不知道为什么?请查看更新后的答案,然后尝试上面提到的最后一个正则表达式。对我有用。您如何检索结果?如果使用m.group(1),则返回“W”。使用m.group()或m.group(0)获取整个匹配项。我正在对匹配项进行迭代(同时使用m.find()),并将m.group()添加到字符串的arraylist中。即使使用上面给出的正则表达式,您是否仍然只获取W?因此它应该匹配“W(5-10)”对吗?您发布的第二个正则表达式字符串?我们可以看看您是如何使用正则表达式的吗?一些带有输入和预期输出的代码示例将非常有助于发现和解释您的错误。这与任意数量的W
s以及任意数量的L
s匹配。我们可以做得更好!