我试图通过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>
但这可以匹配多个单词,也就是说,它将匹配第一个示例和第二个示例。
答案 0 :(得分:0)
您可以通过在模式开始时使用\w
PCRE动词序列来为(*UTF)(*UCP)
字符启用Unicode感知:
(*UTF)(*UCP)<b class="b3">(\w+)<\/b>
请参见regex demo。
PCRE的原始操作是对一字节字符的字符串。但是,原始库中现在还支持UTF-8字符串,一个额外的库支持16位和UTF-16字符串,而第三个库则支持32位和UTF-32字符串。要使用这些功能,必须构建PCRE以包括适当的支持。使用UTF字符串时,必须使用
PCRE_UTF8
,PCRE_UTF16
或PCRE_UTF32
选项调用编译函数,否则该模式必须以以下特殊序列之一开头:
(*UTF8)
(*UTF16)
(*UTF32)
(*UTF)
(*UTF)
是可与任何库一起使用的通用序列。以这样的顺序开始模式等同于设置相关选项。另一个可能出现在模式开头的特殊序列是
(*UCP)
。这与设置PCRE_UCP选项具有相同的效果:它使诸如\d
和\w
之类的序列使用Unicode属性来确定字符类型,而不是通过查找表仅识别代码小于128的字符。