0

我需要一些帮助来编写正则表达式以仅匹配字符串中的数字/数字组:

8000 30 4000应该匹配8000 30 4000

ABC13 8000 3999 2999 Comment应该匹配[space]8000 3999 2999[space]

ABC13 80 55 5600 6000 2700 SDR3 Comment应该匹配[space]80 55 5600 6000 2700[space]

到目前为止,我已经尝试过:

([^a-zA-Z]+[^0-9]{0,2})+(\s*\d{0,4}\s*)
4

1 回答 1

1

我觉得你有点想多了。你也有一些灾难性的回溯。您只需要空格、数字和单词边界:

\s*\b[\d\s]+\b\s*

这将适用于所有三种情况。沿途\s*捕获任何可选空格,同时单词边界\b确保第二个和第三种情况不包括13匹配中的 。

如果要确保每个数字最多有 4 位数字:

\s*\b(?:\d{1,4}\s+)*\d{1,4}\b\s*
于 2012-11-02T11:57:28.897 回答