【问题标题】:RegEx to Find a sentence in running text正则表达式在运行文本中查找句子
【发布时间】:2013-01-14 08:02:10
【问题描述】:

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

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

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

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

此案已
关闭和报告
已创建

我尝试了以下方法:

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

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

【问题讨论】:

  • @J.Steen 实际上是空格和/或换行符。

标签: php regex


【解决方案1】:

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

只需使用regex replace 来规范换行符(和其他空格),然后使用简单的substring search

$t_pattern = "case has been closed";
$subject = preg_replace('/\s+/', " ", $var['subject']);
strpos($subject, $t_pattern)

【讨论】:

  • preg_replace('/\s+/g', " ", $var['subject']);正在返回空字符串
  • @Manju:我不是 PHP 专业人士,它似乎不喜欢 global 标志。见thesequestions
【解决方案2】:

你应该没问题

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

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

【讨论】:

    猜你喜欢
    • 2011-04-02
    • 2023-03-08
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    相关资源
    最近更新 更多