如何改进此正则表达式?
{{1}}
我只想识别字符串中的数字。数字必须没有任何内容,或者如果有数字必须按三个一组分组,但必须作为整数。数字可以从空格开始,也可以在行的开头处,并且可以以空格或行尾结束。
目前,如果字符串以空格开头,则只能找到空格。
答案 0 :(得分:1)
您可以使用
(?<![\d.])
请参阅regex demo
<强>详情:
\b
- 当前位置前不应有数字或点(?:\d{1,3}(?:\.\d{3})*|\d+)
- 一个前导词边界,在当前位置之前必须有字符串的开头或非字的字符\d{1,3}(?:\.\d{3})*
- 2个替代方案中的1个:
.
- 1到3位数后跟零个或多个|
和3位数的序列\d+
- 或\b
- 一个或多个数字(?!\.\d)
- 尾随字边界答案 1 :(得分:0)
这样的事情
((\s\d+\s)|(\s*\d{1,3}(\.\d{3})+\s*))
第一部分(\s\d+\s)
匹配独奏数字,第二部分(\s*\d{3}\.\d{3}\s*)
匹配数字与点和三个组。
我认为你不需要在RegEx中声明一行的开头或结尾
编辑:
可能更容易
(\s*\d(\.\d{3})*\s*)
您要查找一个数字,并选择一些.\d\d\d
答案 2 :(得分:0)
尝试这种模式
[0-9]+\.{1}[0-9]*