我需要正则表达式来支持希伯来语
我用英语运行以下代码
正则表达式
\b(?!ignoreme)\b\S+
来自文字
aaa ignoreme blabla fasdfdsa
结果文字是:
ignoreme
完美无缺
当我尝试用希伯来语运行时 以下代码是
正则表达式
\b(?!תתעלם)\b\S+
来自文字
שלוםאניטקסטתתעלםאניטקסטאקראי
我希望只得到
תתעלם
但它根本不起作用
有什么问题?
答案 0 :(得分:2)
您可以为此目的使用希伯来语unicode。 请参阅所有可用的Hebrew Unicode characters列表,并使用您想要匹配的内容。
对于php,
将匹配单个字符pL
,请参阅demo here
或者你可以使用[(?<!\pL)תתעלם(?!\pL)]
,它匹配来自任何语言的任何类型的字母。要匹配整个单词,您可以尝试preg_match('/(?<!pL)תתעלם(?!pL)/m', 'תתעלם', $match);
var_dump($match);
。
PHP代码:
{{1}}
答案 1 :(得分:2)
您的问题不是希伯来字母(PCRE支持通过属性\p{Hebrew}
),而是Unicode字符。 PCRE正则表达式(如果使用Unicode构建)中有一个Unicode标志可通过u
作为修饰符或(*UTFX)
动词访问 - 其中X
是编码类型。您还有一个额外的\b
,可以安全删除。尝试:
/\b(?!תתעלם)\S+/u
PHP代码:
preg_match('~\b(?!תתעלם)\S+~u', 'תעלם', $match);