Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式比较字符串中的数字_Regex - Fatal编程技术网

Regex 正则表达式比较字符串中的数字

Regex 正则表达式比较字符串中的数字,regex,Regex,我有这样的字符串: 1.2.3 1.4.0.136 V312 V10 2.2.2 r1elease2.0.0 Vr 1.5.1 我想得到正则表达式,它应该从这些字符串中提取版本(没有字符串),并按排序器顺序排列。一次可以传递任意两个字符串进行比较 1.2.3 should become 1.2.3 (no change) 1.4.0.136 should become 1.4.0.136 (no change) V312 should become 312 V10 should become

我有这样的字符串:

1.2.3
1.4.0.136
V312
V10
2.2.2
r1elease2.0.0
Vr 1.5.1
我想得到正则表达式,它应该从这些字符串中提取版本(没有字符串),并按排序器顺序排列。一次可以传递任意两个字符串进行比较

1.2.3 should become 1.2.3 (no change)
1.4.0.136 should become 1.4.0.136 (no change)
V312 should become 312 
V10 should become 10
2.2.2 should become 2.2.2 (no change)
r1elease2.0.0 should become 2.0.0
Vr 1.5.1 should become 1.5.1
我尝试了
/[^0-9\.]+/g
,但在case
r1elease2.0.0
中无效,因为该字符串变成了
12.0.0
,这是不正确的。

尝试:

(?<=^|[\w\s])\d+(?:\.?\d+)*$
(?试试:


(?对于示例数据,您可以使用:

这将匹配一个或多个数字,后跟一个点和一个或多个数字的零次或多次重复模式。它以单词边界
\b
结束,因此
r1elease2.0.0
中的
1
不匹配

解释

  • \d+
    一个或多个数字
  • (?:
    非捕获组
    • \。\d+
      匹配一个点和一个或多个数字
  • )*
    关闭非捕获组并重复零次或多次
  • \b
    单词边界

    • 对于示例数据,您可以使用:

      这将匹配一个或多个数字,后跟一个点和一个或多个数字的零次或多次重复模式。它以单词边界
      \b
      结束,因此
      r1elease2.0.0
      中的
      1
      不匹配

      解释

      • \d+
        一个或多个数字
      • (?:
        非捕获组
        • \。\d+
          匹配一个点和一个或多个数字
      • )*
        关闭非捕获组并重复零次或多次
      • \b
        单词边界
      您可以执行以下操作:

      并使用捕获的组2执行替换。具有
      \d+(?:\.\d+*\b
      的零件由第四次出生解释。零件
      (\w\s?*?
      在替换中被丢弃。输出:

      1.2.3
      1.4.0.136
      312
      10
      2.2.2
      2.0
      1.5.1
      
      你可以做:

      并使用捕获的组2执行替换。具有
      \d+(?:\.\d+*\b
      的零件由第四次出生解释。零件
      (\w\s?*?
      在替换中被丢弃。输出:

      1.2.3
      1.4.0.136
      312
      10
      2.2.2
      2.0
      1.5.1
      

      这应该适用于您
      /\d+(\.?\d+)+/g
      是否存在字符串部分稍后出现的情况,如
      1.0.0-SNAPSHOT
      ?什么语言或工具?这应该适用于您
      /\d+(\.?\d+)/g
      是否存在字符串部分稍后出现的情况,如
      1.0.0-SNAPSHOT
      ?什么语言或工具?