Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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,我正在使用PHP正则表达式查看字符串中是否有模式。简单地说,我想要两个单词中的一个,后跟一个数字。所以,我的模式是: #(guitare|piano)[0-9]# 基本上,如果字符串包含单词“guitare”,我不希望它被匹配,只要我有“guitare9”或“piano0” 此时,如果我对以下字符串使用此模式: J'aime la guitare9 preg_match()的数组返回guitare和guitare9: 我必须在正则表达式中更改什么才能只匹配吉他9?将正则表达式中的捕获组转换为

我正在使用PHP正则表达式查看字符串中是否有模式。简单地说,我想要两个单词中的一个,后跟一个数字。所以,我的模式是:

#(guitare|piano)[0-9]#
基本上,如果字符串包含单词“guitare”,我不希望它被匹配,只要我有“guitare9”或“piano0”

此时,如果我对以下字符串使用此模式:

J'aime la guitare9
preg_match()的数组返回guitare和guitare9:


我必须在正则表达式中更改什么才能只匹配吉他9?

将正则表达式中的捕获组转换为非捕获组。因为
preg_match
将在数组中显示匹配项以及捕获的字符串。通过将捕获组转换为非捕获组,您必须获得单个数组元素

#(?:guitare|piano)[0-9]#

谢谢你提醒我,我等了9分钟,却忘了!