php中的preg_match单词边界

时间:2014-02-06 09:47:01

标签: php regex

我正在尝试这个,用unicode字符获取单词边界中的单词:

if(preg_match("/(?<!\p{L})jaunā(?!\p{L}) Iel.*/iu", "Jaunā. Iela") > 0){
    echo "<h1>Match!</h1>";

}
else{
    echo "<h1>dont match</h1>";
}

为什么我会“不匹配”?

我想在所有变体中找到单词“jaunā”,例如:
文字,jaunā文字
文字jaunā,文字
文字,jaunā!文字
jaunā文本
jaunā,文字

感谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下正则表达式:

/(?<!\p{L})jaunā(?!\p{L}).*? Iel.*/iu

jaunā之后您还有.个字符,因此.*?您可以匹配jaunāIela之间的任何其他字符

答案 1 :(得分:0)

你的正则表达式与dot之后的jaunā不匹配:

试试这个:

if(preg_match("/(?<!\p{L})jaunā(?!\p{L})\. Iel.*/iu", "Jaunā. Iela") > 0) {
    echo "<h1>Match!</h1>";
}
else{
    echo "<h1>dont match</h1>";
}