如何使用PHP正则表达式匹配所有内容?我试过了:/ [。\ r \ n] * /,但它没有用。有任何想法吗?感谢。
这是我为PHP类解析电子邮件的方法:
public function getHeader($headerName) {
preg_match('/[\r\n]' . $headerName . '[:][ ](.+)[\r\n][^ \t]/Uis', "\n" . ltrim($this->originalMessage), $matches); return preg_replace('/[\r\n]*/', '', $matches[1]);
}
答案 0 :(得分:9)
/.*/s
(见perl's docs)。 s
选项表示(从该网址引用):
将字符串视为单行。 (制作。匹配换行符)
答案 1 :(得分:6)
我认为,基于您在上面添加\n
和\r
,您希望将与多行匹配。在这种情况下,请使用:
/.*/s
(请注意明确的/s
修饰符,即更改.
以匹配任何字符,即使是新行,它通常也不匹配。)
答案 2 :(得分:2)
为什么要匹配所有内容?使用它作为一个条件没有意义,因为它总是如此。如果你想捕获文本,你不需要正则表达式,因为你只使用整个字符串。如果你试图绕过污点检查,那么你就会感到羞耻(并且问一个关于这样做的单独问题)。
请注意,我们这里有一点XY Problem。你有一些任务X,并认为Y是解决方案的一部分。你问Y,但从不告诉我们X.当我们不知道你想要做什么时,很难回答你真正的问题。 :)
答案 3 :(得分:0)
/.*/ s怎么样?
在角色类([])中。只是意味着时间。
答案 4 :(得分:0)
/[\.\r\n]+/
能做你想做的吗?
这个kludge之前也对我有用:
my $abstract_text = /Abstract:([\s\S]+?)\nReferences/m;
如果您希望捕获包含任意文本或介于多个捕获之间的模式,这将非常有用。