正面前瞻与阿拉伯语文本不匹配

Positive lookahead doesn't match Arabic text

使用先行断言时正则表达式与阿拉伯文本不匹配

我正在尝试拆分文本:

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

存储在

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

使用正则表达式:

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

函数中

preg_split($pattern, $sentences);

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

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

您可以通过使用 \p{Arabic} Unicode 属性 class(参见 supported names here)并向正则表达式添加 u 修饰符来修复它。请注意 \p{Arabic} 之后的 + 量词是多余的。

使用

$sentences = "شكرا لك على المشاركة في هذه الدراسة. هذا الاستبيان يطلب معلومات عن:";
$pattern = "/(?<=\.)\s+(?=\p{Arabic})/u";
print_r(preg_split($pattern, $sentences));

结果:

Array
(
    [0] => شكرا لك على المشاركة في هذه الدراسة.
    [1] => هذا الاستبيان يطلب معلومات عن:
)