regex查找文本中的所有数字组,这些数字组被分组为多个

regex查找文本中的所有数字组,这些数字组被分组为多个,regex,regex-negation,regex-group,Regex,Regex Negation,Regex Group,我试图找到一篇文章中的所有数字,很多数字都带有点或逗号。然而,我想避免在单词中出现一个数字,例如“hou2se”,但是任何超过一个数字的情况都应该是有效的。现在,我有以下正则表达式: '(\d+\.?\d*)' 我不知道如何避免那种特定的模式。 我试过这样的方法: '(\d+\.?\d*)(?![A-Za-z]\d[A-Za-z])' 但它不起作用。例如,我如何避免找到“hou2se”? 注意:我想要一个被字母包围的数字 编辑:一些示例: "5.5asd" = match 5.5 "asd1

我试图找到一篇文章中的所有数字,很多数字都带有点或逗号。然而,我想避免在单词中出现一个数字,例如“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

我没有包括逗号,但我知道我需要将[,]而不是“\”

放在获取值的可能性上,即匹配您不想要的内容,然后在组中使用

您的值将在捕获组1中

将匹配:

  • \b
    单词边界
  • (?:
    非捕获组
    • [a-zA-Z\]+\d[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
应该能做到这一点。这将检查是否有一个分词后跟一个数字和一系列非字母,或者一个数字和一系列非字母后跟一个分词。它不会匹配任何两面都有字母的东西。

\b\d[^A-Za-z]+\d[^A-Za-z]+\b
应该可以做到这一点。这将检查是否有一个分词后跟一个数字和一系列非字母,或者一个数字和一系列非字母后跟一个分词。它不会匹配任何两面都有字母的内容。

请提供更多示例和结果。“5.5asd”、“asd1.3”、“5,2”或“asd 5,4 asd 2.2 as5d”如何?asd2.2xyz如何?请提供更多示例和结果。“asd 5.5asd”、“asd1.3”、“5,2”或“asd 5,4 asd 2.2 as5d”如何?asd2.2xyz如何?好主意!你需要边界这个词吗?(?:\d+)使“45.”有效too@Chriz接得好!我已经将最后一部分更新为
\d*
好主意!你需要边界这个词吗?(?:\d+)使“45.”有效too@Chriz接得好!我已将最后一部分更新为
\d*