0

您好正在寻找一个正则表达式解决方案来在运行文本中找到一个句子/一组单词。句子有时在一行中或分成两行。请帮忙。

当针对此文本运行时,有一个匹配项:

该案例已结案并已创建报告。

但是,当针对此文本运行时,它无法匹配:

案件已
结案并
已创建报告

我尝试了以下方法:

$t_pattern = "case has been closed";
preg_match($t_pattern, $var['subject'], $regs)

基本上,我在电子邮件正文中搜索关闭票证的句子。响应是从支持票证系统发送的。虽然它在整个句子像示例 1 一样为一行时有效,但在类似于示例 2 的情况下它会失败。

4

2 回答 2

1

没有理由使用正则表达式来搜索该特定字符串。

只需使用正则表达式替换来规范换行符(和其他空格),然后使用简单的子字符串搜索

$t_pattern = "case has been closed";
$subject = preg_replace('/\s+/', " ", $var['subject']);
strpos($subject, $t_pattern)
于 2013-01-30T14:21:01.717 回答
0

你应该没问题

$t_pattern = "/case\s+has\s+been\s+closed/";

匹配一个或多个空白字符,\s+包括换行符。

于 2013-01-30T17:41:37.907 回答