使用超前断言时,正则表达式与阿拉伯文本不匹配
我正在尝试分割文本:
شكرالكعلىالمشاركةفيهذهالدراسة。 هذاالاستبيانيطلبمعلوماتعن:
存储在
$sentences = "شكرا لك على المشاركة في هذه الدراسة. هذا الاستبيان يطلب معلومات عن:";
使用正则表达式:
$pattern = "/(?<=\.)\s+(?=\p{IsArabic}+)/";
功能上
preg_split($pattern, $sentences);
正则表达式不匹配。如果删除前瞻断言,它确实匹配。
为什么会这样?有什么解决方法?
答案 0 :(得分:0)
您可以通过使用\p{Arabic}
Unicode属性类(请参见supported names here)并在正则表达式中添加u
修饰符来修复它。请注意,+
之后的\p{Arabic}
量词是多余的。
使用
$sentences = "شكرا لك على المشاركة في هذه الدراسة. هذا الاستبيان يطلب معلومات عن:";
$pattern = "/(?<=\.)\s+(?=\p{Arabic})/u";
print_r(preg_split($pattern, $sentences));
结果:
Array
(
[0] => شكرا لك على المشاركة في هذه الدراسة.
[1] => هذا الاستبيان يطلب معلومات عن:
)