正则表达式,仅匹配数字,带逗号和括号但不带引号的数字

时间:2018-08-28 20:32:10

标签: regex quotes comma

我正在研究这种正则表达式,该正则表达式似乎适用于大多数情况,除了一种情况,我需要帮助弄清楚如何使其在以下情况下工作  我的字符串如下,并且正则表达式必须仅匹配数字,带逗号的数字,带括号的数字或带逗号和括号的数字。此规则的例外是,它不应与带引号的上述情况的数字匹配。

(  123 122,1232  (123123123) "(123,12321)"    ,1212  12132,121,  "123423"  "1234,12343"  abc,1233  1233,abc)

123 match <br>
122,1232 match<br>
(123123123) match<br>
"123,12321" should not match since it is in quotes<br>
,1212 its fine to match or not match this case<br>
12132,121 match<br>
"123423" should not match again because of quotes<br>
"1234,12343" should not match same reason as above<br>
abc,1233 should not match the numbers here<br>
1234,abc should not match here<br>

我想到的正则表达式:

((?=\s)[\d,]+(?=\)|\s))(?=([^"]*"[^"]*")*[^"]*$)

请帮助我理解为什么abc,1233匹配

1 个答案:

答案 0 :(得分:0)

您尝试使用的Regex不适用于我,因此我提出了另一种解决方案,希望对您有所帮助:

(?<=\s)(\(?[0-9,]+\)?)(?=\s)

在这里先行查找,然后向后查找空格。然后仅在括号内包含匹配项(如果括号位于匹配项的中间,则丢弃该匹配项),然后匹配数字和逗号。