正向超前查询与阿拉伯文字不符

时间:2019-07-19 22:44:12

标签: php regex pcre arabic-support positive-lookahead

使用超前断言时,正则表达式与阿拉伯文本不匹配

我正在尝试分割文本:

  

شكرالكعلىالمشاركةفيهذهالدراسة。 هذاالاستبيانيطلبمعلوماتعن:

存储在

$sentences = "شكرا لك على المشاركة في هذه الدراسة. هذا الاستبيان يطلب معلومات عن:";

使用正则表达式:

$pattern = "/(?<=\.)\s+(?=\p{IsArabic}+)/";

功能上

preg_split($pattern, $sentences);

正则表达式不匹配。如果删除前瞻断言,它确实匹配。

为什么会这样?有什么解决方法?

1 个答案:

答案 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] => هذا الاستبيان يطلب معلومات عن:
)