我有以下PHP正则表达式
preg_match('/[\/\/\*] First: (.*)\n[\/\/\*] Second: (.*)\n/i', $some_string)
但由于某种原因,它与此文本不符:
// First: a string
// Second: another string
我尝试更改Windows和Unix风格之间的行结尾,这没有做任何事情。我也尝试将正则表达式分开来分别匹配First和Second;这有效,但当我把它们放在一起时,它们不再匹配示例文本。它似乎与第二个[\/\/\*]
之后的空间有关...任何想法?
注意我不能改变正则表达式;这是我反驳的客户端代码,因为它们不提供文档。此代码在PHP文件中查找某些模式,以便将它们作为“插件”加载到其产品中。我真的想猜测我需要添加到这些PHP文件的标题,以便将它们正确地识别为插件。
答案 0 :(得分:2)
尝试:
preg_match('~// First: (.*)\n// Second: (.*)~i', $str);
为什么你的正则表达式错了?
[\/\/\*]
是一个与/
或*
匹配的字符类。
但是你似乎在字符串的开头有//
,所以你永远不会获得匹配。
我目前的正则表达式匹配什么字符串?
将当前输入更改为开头为/
,第二行后为换行符:
$some_string =
'/ First: a string
/ Second: another string
';
答案 1 :(得分:2)
$some_string = <<<STR
// First: a string
// Second: another string
STR;
$match = preg_match('`// First: (.*)\n// Second: (.*)\n`i', $some_string);
echo $match;
刚试过这个,它有效。你确定第二行之后有换行符吗?
答案 2 :(得分:0)
(代表OP发布)。
答案:
我试图猜测这匹配的模式。结果是这样:
\ (x, y) -> (x, 1 / y)