【发布时间】:2020-03-10 17:03:11
【问题描述】:
我正在尝试找出一个正则表达式以与 Flex 正则表达式引擎使用 C++ 一起使用,以便我可以从我的编程语言中解析一个结构,其中关键字是希伯来语。正则表达式需要识别的构造/模式之一是:
קו
我试过的正则表达式:"קו"
(קו)
[\u05E7\u05D5]
[\u05D5]{1}[\u05E7]{1}
[^\b\u05D5][\u05E7\b]
第一个有效,但后来我的另一个正则表达式模式也识别了它,我不想要它是:
`[קראטוןםפשדגכעיחלךףזסבהנמצתץ]+`
另外,尝试对下面的上述模式使用 unicode - 它不起作用[\u05D0-\u05EA]+
理想情况下,我希望我的正则表达式模式能够匹配以下字符串组合或其下方的组合
קו אחד = שלום
קו אחד
对于上述情况,我尝试了这些正则表达式模式,但都没有奏效:
(קו)(\s)[קראטוןםפשדגכעיחלךףזסבהנמצתץ]+
(וק)\s+[קראטוןםפשדגכעיחלךףזסבהנמצתץ]+
[קראטוןםפשדגכעיחלךףזסבהנמצתץ]+\s+(וק)
理想情况下,在我的所有正则表达式中,我都希望使用 unicode 字符。
另外,这是我一直用于 unicode 字符的表格:this link
此外,我已经查看了这些问题,并且还尝试了发布的解决方案,但没有任何效果。我只想对没有点的希伯来字母使用 unicode 系统,这些字母只有 unicode 字符 u05D0-u05EA,这些问题涵盖了带点系统的 unicode 字符。无论如何,我似乎无法用非点 unicode 字符替换点 unicode 字符:
tried all solutions here
read through this, tried solution, no success
and this is for PHP, so not very helpful as I'm using C++
【问题讨论】:
-
我认为您应该能够使用语法
\p{Hebrew}来指示希伯来语的Unicode 脚本类别属性。见regular-expressions.info/unicode.html#script。我对 PHP 中的正则表达式处理不够熟悉,不知道是否需要围绕它包装一些额外的语法,或者使用一些特定的 PHP 标志来指示它。但据我了解,PHP 的正则表达式引擎是符合 PCRE 的,并且所有符合 PCRE 的引擎都支持指定在regular-expressions.info/unicode.html#script 定义的 Unicode 脚本类别属性。 -
另见 unicode.org/Public/UCD/latest/ucd/Scripts.txt 资源,显示了
\p{Hebrew}属性引用的 Unicode 代码点范围(以及介于两者之间的各个代码点)——这似乎是总共 134 个代码分:0591..05BD、05BE、05BF、05C0、05C1..05C2、05C3、05C4..05C5、05C6、05C7、05D0..05EA、05EF..05F2、05F3..05F4、FB1D、FB1E、FB1F。 .FB28、FB29、FB2A..FB36、FB38..FB3C、FB3E、FB40..FB41、FB43..FB44、FB46..FB4F -
@Wiktor Stribiżew C++ 正则表达式似乎与 Javascript 正则表达式不同。
-
@slideshowbarker 抱歉,我没有使用 PHP。我意识到链接的问题似乎具有误导性,因此我更改了链接标签。我正在使用 C++——我在阅读 PHP 时确实遇到了这个
\p{Hebrew},这是一个非常好的资产。你知道 C++ 是否包含类似的东西吗?根据我的研究,我找不到任何表明这一点的东西。 -
这无关紧要,因为 Unicode 单位在所有这些正则表达式引擎中都是相同的。
std::regex不支持\p{Hebrew},但你可以试试boost::regex的运气。