2

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

我正在尝试拆分文本:

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

存储在

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

使用正则表达式:

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

在功能上

preg_split($pattern, $sentences);

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

为什么会这样?什么可能是解决方法?

4

1 回答 1

1

您可以通过使用\p{Arabic}Unicode 属性类(请参阅此处支持的名称)并将u修饰符添加到正则表达式来修复它。请注意,+量词 after\p{Arabic}是多余的。

利用

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

结果:

Array
(
    [0] => شكرا لك على المشاركة في هذه الدراسة.
    [1] => هذا الاستبيان يطلب معلومات عن:
)
于 2019-07-19T22:53:49.327 回答