Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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
Php 使用正则表达式从文本中获取1-10中的10_Php_Regex - Fatal编程技术网

Php 使用正则表达式从文本中获取1-10中的10

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条记录。,您可以利用-正好出现在您要捕获的数字之前,并可以编写这样的正则表达

假设我有一个这样的示例文本“1-10这是一个文本1000条记录。”

如何使用正则表达式从中获取数字10 我正在使用PHP。是

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
非常方便。很高兴提供帮助:)