Php #分隔符之间的正则表达式匹配
我有一个字符串,完全如图所示,我试图匹配分隔符之间的内容Php #分隔符之间的正则表达式匹配,php,regex,Php,Regex,我有一个字符串,完全如图所示,我试图匹配分隔符之间的内容 # a This is what should be matched/returned # \a #a和#\a是分隔符 # a This is what should be matched/returned # \a 不匹配的PHP/Regex: $str = <<<EOD # a this is what should be returned # \a EOD; preg_match("/#\sa\n(.*)
# a
This is what should be matched/returned
# \a
#a
和#\a
是分隔符
# a
This is what should be matched/returned
# \a
不匹配的PHP/Regex:
$str = <<<EOD
# a
this is what should be returned
# \a
EOD;
preg_match("/#\sa\n(.*)\n#\s\\a/m", $str, $matches);
/*
Array
(
)
*/
print_r($matches);
$str=有几种方法:
s
用于
匹配换行符的修饰符
\\\
以退出\
可能有一个\r\n
而不是一个\n
所以我使用了\s
你到底为什么到处使用{1}
?这{1}
是怎么回事?你可以删除它们,没有它们的正则表达式是一样的。可能需要使用单引号或双转义反斜杠。另外,{1}
不需要,因为字符本身代表一个字符。是否尝试添加多行修饰符“/{1}\s{1}a{1}\n{1}(.*)\n{1}\s{1}\\a{1}/m”
这个{1}是多余的,因为它意味着只匹配一次。不管怎么说,你是否错过了php正则表达式的多行标志?别忘了投否决票,这是个很糟糕的问题;p谢谢,就这样。还有s
modifier
char在没有它的情况下无法匹配换行符。因此,您可能不需要第二个\s
。或者您可以去掉s
并使用\s+
,然后将?
添加到*
。有几种方法。另外,可能希望使*
不贪婪<代码>*?