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@Francescopreg\u match
!=preg\u match\u all
我的问题是关于PHP的:给定正则表达式,如何提取字符串?d代表数字吗?@Francesco实际上,它是\d
,代表“0到9之间的数字”。它与[0-9]相同
并被称为“字符类”,您可以看到它。@Francesco是的,\d==[0-9]
,但是您可以用digit@Francescopreg\u match
!=preg\u match\u all
我的问题是关于PHP的:给定正则表达式,如何提取字符串?