Php 使用正则表达式从文本中获取1-10中的10
假设我有一个这样的示例文本“1-10这是一个文本1000条记录。” 如何使用正则表达式从中获取数字10 我正在使用PHP。是Php 使用正则表达式从文本中获取1-10中的10,php,regex,Php,Regex,假设我有一个这样的示例文本“1-10这是一个文本1000条记录。” 如何使用正则表达式从中获取数字10 我正在使用PHP。是 preg_match('/[^-0-9]/', '', $text) 好吗?与preg\u replacepreg\u match不同,函数将第一个参数作为需要匹配的正则表达式,第二个参数作为应用正则表达式进行匹配的字符串,第三个参数是存储匹配的变量。要捕获1-10中的10,这是一个文本1000条记录。,您可以利用-正好出现在您要捕获的数字之前,并可以编写这样的正则表达
preg_match('/[^-0-9]/', '', $text)
好吗?与
preg\u replace
preg\u match
不同,函数将第一个参数作为需要匹配的正则表达式,第二个参数作为应用正则表达式进行匹配的字符串,第三个参数是存储匹配的变量。要捕获1-10中的10
,这是一个文本1000条记录。
,您可以利用-
正好出现在您要捕获的数字之前,并可以编写这样的正则表达式
-(\d+)
$s = "1-10 this is a text 1000 records.";
preg_match('/-(\d+)/', $s, $m);
print($m[1]); // m[0] will contain full match and m[1] will contain text matched by group1
基本上,它将查找连字符-
,并将捕获组1中具有1个或多个数字的任何数字。在php中,您可以这样访问它
-(\d+)
$s = "1-10 this is a text 1000 records.";
preg_match('/-(\d+)/', $s, $m);
print($m[1]); // m[0] will contain full match and m[1] will contain text matched by group1
它打印
10
如果你想得到这个号码,替换它可能不是你想要的。我已经编辑了这个问题,应该是preg\u matchUse
/\d+-\K\d+/
谢谢!但是\K做什么呢?\K
是一个重置匹配运算符,所以在开始时被\d+-
捕获的任何内容都将被重置,并且不会被捕获到匹配的文本中,因此\K
后面的\d+
将为您捕获值10
,我接受这个答案,但我只想知道哪个更“熟练”在阿努巴瓦的answer@dashred:在这种情况下,您可以使用任何\K
主要在以下情况下有用:当您要搜索由特定文本包含的某些文本,但无法执行可变长度查找时,\K
非常方便。很高兴提供帮助:)