是正则表达式支持希伯来语

时间:2018-05-06 21:36:09

标签: php regex hebrew

我需要正则表达式来支持希伯来语

我用英语运行以下代码

正则表达式

\b(?!ignoreme)\b\S+

来自文字

aaa ignoreme blabla fasdfdsa

结果文字是:

  

ignoreme

完美无缺

当我尝试用希伯来语运行时 以下代码是

正则表达式

\b(?!תתעלם)\b\S+

来自文字

שלוםאניטקסטתתעלםאניטקסטאקראי

我希望只得到

  

תתעלם

但它根本不起作用

有什么问题?

2 个答案:

答案 0 :(得分:2)

您可以为此目的使用希伯来语unicode。 请参阅所有可用的Hebrew Unicode characters列表,并使用您想要匹配的内容。

对于php,֐将匹配单个字符pL,请参阅demo here

或者你可以使用[(?<!\pL)תתעלם(?!\pL)],它匹配来自任何语言的任何类型的字母。要匹配整个单词,您可以尝试preg_match('/(?<!pL)תתעלם(?!pL)/m', 'תתעלם', $match); var_dump($match);

Live Demo

PHP代码:

{{1}}

答案 1 :(得分:2)

您的问题不是希伯来字母(PCRE支持通过属性\p{Hebrew}),而是Unicode字符。 PCRE正则表达式(如果使用Unicode构建)中有一个Unicode标志可通过u作为修饰符或(*UTFX)动词访问 - 其中X是编码类型。您还有一个额外的\b,可以安全删除。尝试:

/\b(?!תתעלם)\S+/u

Live demo

PHP代码:

preg_match('~\b(?!תתעלם)\S+~u', 'תעלם', $match);