Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Numbers_Match - Fatal编程技术网

Regex 正则表达式选择字符串后的所有数字

Regex 正则表达式选择字符串后的所有数字,regex,string,numbers,match,Regex,String,Numbers,Match,我不熟悉正则表达式,我想知道是否有任何方法可以选择匹配字符串后的所有数字 例如: 输入: 重要字符串 abc 100 def 50 ghi jk 10 m 60 不重要的字符串 aa 90 bb 20 作为输出,我想选择所有这些数字:100,50,10,60 我尝试了重要字符串[\w\n]*(\d+),但只得到了60个 非常感谢 在某些文本之间匹配多个匹配的一般PCRE方法是使用基于\G的模式,该模式允许在上一次成功匹配结束时锚定匹配: (?:\G(?!\A)|(?<!\bnot )imp

我不熟悉正则表达式,我想知道是否有任何方法可以选择匹配字符串后的所有数字

例如:

输入:

重要字符串
abc 100
def 50
ghi jk 10
m 60
不重要的字符串
aa 90
bb 20

作为输出,我想选择所有这些数字:100,50,10,60

我尝试了
重要字符串[\w\n]*(\d+)
,但只得到了60个


非常感谢

在某些文本之间匹配多个匹配的一般PCRE方法是使用基于
\G
的模式,该模式允许在上一次成功匹配结束时锚定匹配:

(?:\G(?!\A)|(?<!\bnot )important string)(?:(?!not important string)\D)*?\K\d+
或者,为了保持在初始的
起始分隔符\u字符串
边界内,将其添加到负前瞻:

(?s)(?:\G(?!\A)|STARTING_DELIMITER_STRING)(?:(?!STARTING_DELIMITER_STRING|END_DELIMITER_STRING).)*?\K\d+
详细信息

  • (?:\G(?!\A)|)(?-上一次成功匹配的结束(
    \G(?!\A)
    )或
    重要字符串
    文本字符序列前面没有
    +空格
  • (?:(?!非重要字符串)\D)*?
    -除数字(
    \D
    )以外的任何字符,0+次,次数尽可能少,这不是
    非重要字符串
    字符序列的起点
  • \K
    -匹配重置运算符
  • \d+
    -1+位

在某些文本之间匹配多个匹配的通用PCRE方法是使用基于
\G
的模式,该模式允许在上一次成功匹配结束时锚定匹配:

(?:\G(?!\A)|(?<!\bnot )important string)(?:(?!not important string)\D)*?\K\d+
或者,为了保持在初始的
起始分隔符\u字符串
边界内,将其添加到负前瞻:

(?s)(?:\G(?!\A)|STARTING_DELIMITER_STRING)(?:(?!STARTING_DELIMITER_STRING|END_DELIMITER_STRING).)*?\K\d+
详细信息

  • (?:\G(?!\A)|)(?-上一次成功匹配的结束(
    \G(?!\A)
    )或
    重要字符串
    文本字符序列前面没有
    +空格
  • (?:(?!非重要字符串)\D)*?
    -除数字(
    \D
    )以外的任何字符,0+次,次数尽可能少,这不是
    非重要字符串
    字符序列的起点
  • \K
    -匹配重置运算符
  • \d+
    -1+位

根据您的输入判断,您可以只使用
/\d+/g
。您可以用您的编程语言检查字符串是否包含
重要字符串。编程语言是什么?@WiktorStribiżew yea.。但问题是,此输入是在另一个大文本中,其中也有很多数字,并且/\d+/g将接受所有这些数字。一个d顺便说一句,我使用regex101.com来练习,所以我没有真正使用任何编程语言。然后还有两个问题:1)您将使用什么样的regex风格?(regex101提供3个);2)尾随边界是什么(在重要字符串之后何时停止收集数字)?类似的东西可能会有帮助。@WiktorStribiżew是的,这就是我要找的,谢谢!根据您的输入判断,您可以使用
/\d+/g
。您可以用您的编程语言来检查字符串是否包含
重要字符串
。编程语言是什么?@WiktorStribiżew是的。。但问题是,这个输入是在另一个大文本,也有很多数字,/\d+/g将包含所有数字。顺便说一句,我使用regex101.com进行练习,所以我没有真正使用任何编程语言。然后还有两个问题:1)您将使用什么regex风格?(regex101提供3个);2)尾部边界是什么(什么时候停止收集重要字符串后的数字)?类似的内容可能会有所帮助。@WiktorStribiżew是的,这就是我要找的,谢谢!