正则表达式 - 查找包含特定字符串的完整单词

时间:2014-03-28 16:57:23

标签: regex

我正在尝试匹配在提供的字符串中包含特定字符串的'words'。

这个reg_ex效果很好:

preg_match('/\b(\w*form\w*)\b/', $string, $matches);

因此,例如,如果我的字符串包含:“哪个人已经改革或执行”,则返回重组并执行。

但是,我需要匹配代码中的代码,所以我对'word'的定义是基于将字符串纯粹用空格分割。

例如,我有一个像:

这样的字符串

测试MFC-123 / Ben MFC / 7474

我需要匹配'MFC',它应该返回'MFC-123 / Ben'和'MFC / 7474'。

如何修改上述reg_ex以匹配所有字符并将空格用作边界。

由于

2 个答案:

答案 0 :(得分:2)

只需使用它就能为您完成:

(MFC\S+)

它表示MFC

之后的任何非空白字符

如果MFC介于文本之间或单独使用,则可以在MFC之前和之后放置\S*。例如

(\S*MFC\S*)

匹配:

MFC-12312
1231-MFC
MFC

答案 1 :(得分:1)

如果你想获得不包含空格并且包含你的MFC匹配的整个文本块,你可以使用以下正则表达式:

\b(\S*MFC\S+)\b

说明:

    \b assert position at a word boundary (^\w|\w$|\W\w|\w\W)
    1st Capturing group (\S*MFC\S+)
    \S* match any non-white space character [^\r\n\t\f ]
        Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed.
    MFC matches the characters MFC literally (case sensitive)
    \S+ match any non-white space character [^\r\n\t\f ]
        Quantifier: Between one and unlimited times, as many times as possible, giving back as needed.
    \b assert position at a word boundary (^\w|\w$|\W\w|\w\W)

匹配块以粗体显示的示例:

测试 MFC-123 / Ben jbas2 / jda lmasdlmasd; mwrsMFCkmasd j2 \ 13 MFC / 7474

希望这会有所帮助。