PHP如何使用preg_match选择近词

时间:2014-09-04 00:56:02

标签: php preg-match

我有一个字符串:

$str = "Hello, I'm a beautiful, string. How are you?";

我希望得到#34;美丽"的下一个字。我的意思是,我想得到" string"。 我认为使用pre_match更好地处理迭代器数组并比较每个单词...(必须省略逗号,点和斜杠)。 我对此一无所知......如果有可能的话。

2 个答案:

答案 0 :(得分:3)

您可以使用this regex

~beautiful[^a-zA-Z\d.]*([a-zA-Z\d]+)~

E.g。用PHP:

preg_match('~beautiful[^a-zA-Z\d.]*([a-zA-Z\d]+)~', $str, $results);
echo $results[1]; // string

细分:

~ 
    beautiful        // match "beautiful literally
    [^a-zA-Z\d]*     // don't match any letters or digits zero or more (catch punctuation etc)
    (                // open capture group
        [a-zA-Z\d]+  // match letters or numbers at least once
    )                // close capture group (stops at first occurence that 
~                    //   doesn't match above     

答案 1 :(得分:3)

您可以使用以下内容:

\bbeautiful\b\W*\b(\w+)\b

类似于:

  • 将您的单词与双方的单词边界相匹配
  • 匹配任意数量的非单词字符
  • 匹配下一个单词(两边都有单词边界)

An example