正则表达式匹配直到单词但不包括该关键字

时间:2013-08-20 17:02:43

标签: php regex preg-match

我有这个正则表达式,输出有点奇怪,当我回复电子邮件的正文时看不到换行符

当我运行时:

Message:(.*?)

而不是它在Message之后返回所有内容它返回电子邮件的整个主体,好像它的忽略行中断

所以我尝试了这个并且它有效

Message:(.*?)Issue

它捕获从第一个关键字到最后一个关键字的所有内容,但它包含了我不想要的问题的关键字,如何包含除问题不包括的所有内容?

当我返回我得到的字符串时 消息:这是一个测试\ r

除了运行str_replace除了那些之外,还有更好的方法吗? 我是一个正则表达的处女:)

1 个答案:

答案 0 :(得分:2)

使用positive forward lookahead

preg_match('/Message:(.*?)(?=Issue)/', 'Message: blah blah Issue', $matches);
print_r($matches);

打印

Array
(
    [0] => Message: blah blah
    [1] =>  blah blah
)