正则表达式查找文本中分组为多个的所有数字组
regex to find all digits groups, that are grouped as more than one, inside a text
我正在尝试查找文本中的所有数字,很多数字带有点或逗号。但是我想避免单个数字出现在一个单词中,例如 'hou2se',但是任何超过一个数字的情况都应该是有效的。现在我有以下正则表达式:
'(\d+\.?\d*)'
这符合我的要求,我不知道如何避免该特定模式。
我试过这样的事情:
'(\d+\.?\d*)(?![A-Za-z]\d[A-Za-z])'
但是没用。例如,我怎样才能避免找到 'hou2se'?
注意:我想避免创建一个被字母包围的数字。
编辑:一些例子:
"5.5asd" = match 5.5
"asd1.3 " = match 1.3
"5,2" = match 5,2
"asd 5,4 asd 2.2 as5d" = match 5,4 and 2.2
"asd 45. mms555as 4545 sas 5book" = match 45. 555 4545 5
我没有包含逗号,但我知道我需要用 [.,] 代替“\.”。
获得你的价值观的一种可能性是匹配你不想要的东西,然后使用 alternation:
在一个组中捕获你想要的东西
\b(?:[a-zA-Z_]+\d[a-zA-Z_]+)\b|(\d+(?:[.,]\d*)?)
您的值将在捕获组 1 中
将匹配:
\b
字边界
(?:
非捕获组
[a-zA-Z_]+\d[a-zA-Z_]+
在一个或多个单词字符之间匹配一个数字 \d
[a-zA-Z_]+
(没有数字)
)
关闭非捕获组
\b
字边界
|
或
(
捕获组
\d+(?:[.,]\d*)?
匹配一个或多个数字后跟一个可选部分,该部分匹配一个点或逗号以及零个或多个数字
)
关闭捕获组
\b\d[^A-Za-z]+|\d[^A-Za-z]+\b
应该可以解决问题。这将检查是否有一个分词符后跟一个数字和一系列 non-letters,或者一个数字和一系列 non-letters 后跟一个分词符。它不会匹配任何两边都有字母的东西。
我正在尝试查找文本中的所有数字,很多数字带有点或逗号。但是我想避免单个数字出现在一个单词中,例如 'hou2se',但是任何超过一个数字的情况都应该是有效的。现在我有以下正则表达式:
'(\d+\.?\d*)'
这符合我的要求,我不知道如何避免该特定模式。 我试过这样的事情:
'(\d+\.?\d*)(?![A-Za-z]\d[A-Za-z])'
但是没用。例如,我怎样才能避免找到 'hou2se'? 注意:我想避免创建一个被字母包围的数字。
编辑:一些例子:
"5.5asd" = match 5.5
"asd1.3 " = match 1.3
"5,2" = match 5,2
"asd 5,4 asd 2.2 as5d" = match 5,4 and 2.2
"asd 45. mms555as 4545 sas 5book" = match 45. 555 4545 5
我没有包含逗号,但我知道我需要用 [.,] 代替“\.”。
获得你的价值观的一种可能性是匹配你不想要的东西,然后使用 alternation:
在一个组中捕获你想要的东西\b(?:[a-zA-Z_]+\d[a-zA-Z_]+)\b|(\d+(?:[.,]\d*)?)
您的值将在捕获组 1 中
将匹配:
\b
字边界(?:
非捕获组[a-zA-Z_]+\d[a-zA-Z_]+
在一个或多个单词字符之间匹配一个数字\d
[a-zA-Z_]+
(没有数字)
)
关闭非捕获组\b
字边界|
或(
捕获组\d+(?:[.,]\d*)?
匹配一个或多个数字后跟一个可选部分,该部分匹配一个点或逗号以及零个或多个数字
)
关闭捕获组
\b\d[^A-Za-z]+|\d[^A-Za-z]+\b
应该可以解决问题。这将检查是否有一个分词符后跟一个数字和一系列 non-letters,或者一个数字和一系列 non-letters 后跟一个分词符。它不会匹配任何两边都有字母的东西。