正面前瞻与阿拉伯语文本不匹配
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] => هذا الاستبيان يطلب معلومات عن:
)
使用先行断言时正则表达式与阿拉伯文本不匹配
我正在尝试拆分文本:
شكرا لك على المشاركة في هذه الدراسة. هذا الاستبيان يطلب معلومات عن:
存储在
$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] => هذا الاستبيان يطلب معلومات عن:
)