仅对希腊语匹配整个单词

时间:2020-07-07 16:00:10

标签: regex pcre

我试图通过MW 1.31(运行MariaDB 10.3.22的服务器)中的Replace Text扩展名匹配整个多调希腊词。

当我想用ASCII字符匹配整个单词(仅一个单词)时,我会使用类似

Example Text: <b class="b2">suspicion</b>
Find: <b class="b2">([\w]+)<\/b>
Replace: [[$1]]

或者输入两个词:

Example Text: <b class="b2">suspicion, feeling</b>
Find: <b class="b2">([\w]+), (([\w]+)<\/b>
Replace: [[$1]], [[$2]]

但是用希腊语单词边界不起作用。我尝试过:

Example Text 1: <b class="b2">λογισμὸς, ἑστὼς, καὶ νουνεχής</b>
Example Text 2: <b class="b2">λογισμὸς</b>

<b class="b2">(.*?[Α-Ωα-ωίϊίΐἶἶἴῖἰἱἵἰὶἱἸόὀὁόὅὍὄάἄἅᾳἀἁᾴὰάᾷέέἐἑἕἕἔύϋύΰὖῦῆἠἡἥἦἤἤἩῃήήῇώῳώῶῷὠὦὧὠᾠὤὥὡπῥσὑὐὕφΧψ]+?.*?)<\/b>

但这可以匹配多个单词,也就是说,它将匹配第一个示例和第二个示例。

1 个答案:

答案 0 :(得分:0)

您可以通过在模式开始时使用\w PCRE动词序列来为(*UTF)(*UCP)字符启用Unicode感知:

(*UTF)(*UCP)<b class="b3">(\w+)<\/b>

请参见regex demo

根据PCRE documentation

PCRE的原始操作是对一字节字符的字符串。但是,原始库中现在还支持UTF-8字符串,一个额外的库支持16位和UTF-16字符串,而第三个库则支持32位和UTF-32字符串。要使用这些功能,必须构建PCRE以包括适当的支持。使用UTF字符串时,必须使用PCRE_UTF8PCRE_UTF16PCRE_UTF32选项调用编译函数,否则该模式必须以以下特殊序列之一开头:

(*UTF8)
(*UTF16)
(*UTF32)
(*UTF)

(*UTF)是可与任何库一起使用的通用序列。以这样的顺序开始模式等同于设置相关选项。

另一个可能出现在模式开头的特殊序列是(*UCP)。这与设置PCRE_UCP选项具有相同的效果:它使诸如\d\w之类的序列使用Unicode属性来确定字符类型,而不是通过查找表仅识别代码小于128的字符。

相关问题