这是我第一次将REGEX与preg_match一起使用,而且我对REGEX一点也不熟悉。所以我试图在输入中找到字符串(不区分大小写)def
,后跟一个字符串。我正在使用的正则表达式是:(?-i)def?\.
我收到以下错误:Warning: preg_match(): Unknown modifier 'd' in /var/www/process.php on line 11
输入时:asdsa saj dasjdkj def ddas
与任何其他输入相同的错误。
那么我在这里搞砸了什么?有一些简单的解决方法吗?
对不起,如果这看起来很傻,但我在这个PHP领域是个小妞。
答案 0 :(得分:2)
您必须使用delimiting character作为正则表达式。这是正则表达式中的第一个字符,必须是非字母数字(非空格,非反斜杠)字符。因此,正则表达式解析器在您的示例中将(
作为分隔符(括号样式),并认为d是结束括号之后的修饰符,由于它不存在而无法识别。
更好的正则表达式是:
/def/i
匹配字符串中的“def”。您想要与(?-i)
部分匹配什么? def
之后是.
吗? f
是可选的吗?这就是您目前正在使用示例正则表达式告诉正则表达式引擎。
编辑: 在开头匹配“是”或“意志”后跟一个空格:
/^(Was|Will) /i