我正在研究这种正则表达式,该正则表达式似乎适用于大多数情况,除了一种情况,我需要帮助弄清楚如何使其在以下情况下工作 我的字符串如下,并且正则表达式必须仅匹配数字,带逗号的数字,带括号的数字或带逗号和括号的数字。此规则的例外是,它不应与带引号的上述情况的数字匹配。
( 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
匹配
答案 0 :(得分:0)
您尝试使用的Regex不适用于我,因此我提出了另一种解决方案,希望对您有所帮助:
(?<=\s)(\(?[0-9,]+\)?)(?=\s)
在这里先行查找,然后向后查找空格。然后仅在括号内包含匹配项(如果括号位于匹配项的中间,则丢弃该匹配项),然后匹配数字和逗号。