如何在那之后用逗号和零搜索整数(正则表达式)?

时间:2014-12-04 19:54:20

标签: regex r string stringi

我尝试创建正则表达式以提取所有整数。它也可以是6 -12 bur +6.000-5,0,另一个是提取非整数的实数,例如3.14,{{1}但没有-6,26

为了找到整数,我尝试5.0,但它不适用于"^[+-]?([0-9]+)(\\[.,]0{1,})?$"。我不知道如何创建第二个正则表达式(如何用comas或点排除整数然后为零)。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

整数正则表达式的问题似乎是反斜杠(es)。我不知道你需要转义一个字符类的开始括号的任何正则表达式引擎,你肯定不想匹配文字反斜杠。此外,对于完全理解它的正则表达式引擎,量词{1,}是一种更加丑陋,更复杂的说法+

这应该进行整数匹配:

"^[+-]?[0-9]+([.,]0+)?$"

这种变化应该进行非整数匹配:

"^[+-]?[0-9]+[.,]0*[1-9][0-9]*$"

在这两种情况下,我都省略了表示正确模式所不需要的括号,但是如果你需要捕获部分匹配,那么你需要添加一些。你可能还想将分组括号转换为非捕获如果您使用支持它的正则表达式引擎,请填写表单。

此外,根据您的示例,实数模式在分数分隔符之前至少需要一位数。将模式转换为匹配.1-.17形式的字符串也很容易。类似地,如果存在分数分隔符,则整数模式在分数部分中至少需要一个零,并且也可以删除限制。