Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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正则表达式:在字符串中查找给定模式的第一个匹配项_Php_Regex - Fatal编程技术网

PHP正则表达式:在字符串中查找给定模式的第一个匹配项

PHP正则表达式:在字符串中查找给定模式的第一个匹配项,php,regex,Php,Regex,我的绳子可以是 new-york-10036 或 期望的结果是 new-york chicago 我基本上想删除第一个破折号后面的所有字符串,后面跟一个数字 看起来很简单,但我不知道如何使用负前瞻,例如: (.+)(?=\-\d) 正则表达式是这样写的:“给我所有不是的东西,后面紧跟着一个破折号,后面紧跟着一个数字” 给定输入new-york-10036,正则表达式将只捕获new-york。在PHP中,您可以通过以下方式获得匹配的字符串: $string = 'new-york-10036

我的绳子可以是

new-york-10036

期望的结果是

new-york
chicago
我基本上想删除第一个破折号后面的所有字符串,后面跟一个数字


看起来很简单,但我不知道如何使用负前瞻,例如:

(.+)(?=\-\d)
正则表达式是这样写的:“给我所有不是的东西,后面紧跟着一个破折号,后面紧跟着一个数字”

给定输入
new-york-10036
,正则表达式将只捕获
new-york
。在PHP中,您可以通过以下方式获得匹配的字符串:

$string = 'new-york-10036';

$regex = '/(.+)(?=\-\d)/';

preg_match($regex, $string, $return);

echo $return[0] . "\n";
它输出纽约


查看正则表达式的工作情况。

您可以使用负前瞻,如下所示:

(.+)(?=\-\d)
正则表达式是这样写的:“给我所有不是的东西,后面紧跟着一个破折号,后面紧跟着一个数字”

给定输入
new-york-10036
,正则表达式将只捕获
new-york
。在PHP中,您可以通过以下方式获得匹配的字符串:

$string = 'new-york-10036';

$regex = '/(.+)(?=\-\d)/';

preg_match($regex, $string, $return);

echo $return[0] . "\n";
它输出纽约


查看正则表达式的工作情况。

您是否尝试过使用一些尝试或伪代码开始?这一个应该足够了
(.*)-\d+
您已经有了一个很好的开始:“我基本上希望删除第一个破折号后面的所有字符串-后跟一个数字”现在您可以尝试将其放入更通用的伪正则表达式中,例如:
[Anything]-number
,然后您可以尝试逐步将其转换为正则表达式,如:
(.*)-\d+
非常确定这将适用于preg\u match\u all:/([a-zA-Z\-]+)\-[0-9]+/g您尝试过用一些尝试或伪代码开始吗?这应该足够了
(.*)-\d+
您已经有了一个很好的开始:“我基本上想删除第一个破折号后面的所有字符串-后跟一个数字”现在你可以试着把它放到一个更通用的伪正则表达式中,比如:
[Anything]-number
,然后你可以试着一步一步地把它转换成正则表达式,比如:
(.*)-\d+
非常确定这对preg\u match\u all:/([a-zA-Z\-]+)\-[0-9]+/G“d”代表数字吗?@Francesco实际上,它是
\d
,代表“0到9之间的数字”。它与
[0-9]
相同,被称为“字符类”,你可以看到。@Francesco是的,
\d=[0-9]
,但是你可以用digit@Francesco
preg\u match
!=
preg\u match\u all
我的问题是关于PHP的:给定正则表达式,如何提取字符串?d代表数字吗?@Francesco实际上,它是
\d
,代表“0到9之间的数字”。它与
[0-9]相同
并被称为“字符类”,您可以看到它。@Francesco是的,
\d==[0-9]
,但是您可以用digit@Francesco
preg\u match
!=
preg\u match\u all
我的问题是关于PHP的:给定正则表达式,如何提取字符串?