0

我想从任何短语中分别提取每个单词。我还需要匹配特殊字符,例如变音符号。

目前,我使用这个:

preg_match_all('/\b([a-zA-ZäöüåÄÖÜÅ]*)\b/', $string, $matches);

但是,这给了我冗余和空匹配。例如,“zu spät”返回

Array ( [0] => Array ( [0] => zu [1] => [2] => spät [3] => ) 
        [1] => Array ( [0] => zu [1] => [2] => spät [3] => ) ) 

匹配“任意字母”的正确表达方式是什么?我能对双匹配和空匹配做些什么?

4

1 回答 1

2

你可以试试这个:

preg_match_all('/\b\p{L}+\b/u', $string, $matches);

where\p{L}匹配任何字母。

在您的代码示例中,您获得“双倍”结果:第一个是整个模式,第二个是捕获组。这就是我删除捕获组的原因。为了避免空结果,我将*量词(零次或多次)替换为+量词(一次或多次)。

于 2013-10-17T16:58:19.300 回答