未在组正则表达式中查找子字符串

时间:2011-10-24 02:21:27

标签: java regex

我正在尝试找到一个看起来像"3/4"的子字符串(分子和分母的任意数字0-9)。但是,我尝试解析的文本如果是1/4则可能只包含"/4"。在这些情况下,我不关心"/",只想要分母。我当前的正则表达式为"[0-9?\\/0-9]",但当我希望将其分组时,它会逐一返回'3/4'

有没有人对此有解决方法?

非常感谢!

4 个答案:

答案 0 :(得分:1)

这个正则表达式:

[0-9?\/0-9]

是匹配单个数字,问号或斜杠的字符类。你想要这个:

[0-9]?\/[0-9]

或者这个:

\d?\/\d

答案 1 :(得分:0)

通过( )运算符

使用捕获组
[0-9]?\/([0-9])

答案 2 :(得分:0)

我认为你想使用管道创建一个或:

 ([0-9]\/[0-9])|\/([0-9])

这种方法的缺点是,你需要验证第1组或第2组是否返回了一个匹配...所以如果你有一个完整的分数,你会得到第一组中的结果,如果匹配分母,分母将出现在第二组中。

可能更有意义:

([0-9]*\/[0-9])

然后检查每场比赛的长度,并在必要时删除'/'。

答案 3 :(得分:-1)

请改为尝试:

"([0-9]*\\?[0-9]+)"