具有多调希腊大写字母的意外正则表达式结果
Unexpected regex results with polytonic Greek capitals
我正在尝试 select 使用正则表达式在多调希腊文本中仅使用大写字母。具体的应用程序是 PHP,但我遇到了麻烦所以我开始在 RegExr 中玩弄它:
([Α-ΩΗΙΟΥΩᾼῌῼΡΆΈΉΊΌΎΏᾺῈῊῚῸῪῺἈἘἨἸὈὨᾈᾘᾨἌἜἬἼὌὬᾌᾜᾬἊἚἪἺὊὪᾊᾚᾪἎἮἾὮᾎᾞᾮἉἙἩἹὉὙὩᾉᾙᾩῬἍἝἭἽὍὝὭᾍᾝᾭἋἛἫἻὋὛὫᾋᾛᾫἏἯἿὟὯᾏᾟᾯΪΫᾹῙῩᾸῘῨ])
当 JavaScript 引擎被 selected 时,行为符合预期。但是,如果我 select PCRE 不仅是大写字母 selected,还有一堆看似随机的小写字母。
任何人都可以阐明这里发生的事情吗?这是一个错误吗?有没有办法使用 PCRE 引擎得到想要的结果?
您需要告诉 PCRE 正则表达式引擎将输入解析为 Unicode 字符串。
在 PCRE 正则表达式中,您可以在模式前加上 (*UTF)
动词。 (*UTF)[Α-ΩΗΙΟΥΩᾼῌῼΡΆΈΉΊΌΎΏᾺῈῊῚῸῪῺἈἘἨἸὈὨᾈᾘᾨἌἜἬἼὌὬᾌᾜᾬἊἚἪἺὊὪᾊᾚᾪἎἮἾὮᾎᾞᾮἉἙἩἹὉὙὩᾉᾙᾩῬἍἝἭἽὍὝὭᾍᾝᾭἋἛἫἻὋὛὫᾋᾛᾫἏἯἿὟὯᾏᾟᾯΪΫᾹῙῩᾸῘῨ]
突出显示正确的匹配项。
但是,您也可以使用
使其更短一些
(*UTF)(?=\p{Lu})\p{Greek}
这里,
(*UTF)
- 告诉 PCRE 引擎输入是 Unicode 字符串的 PCRE 动词
(?=\p{Lu})
- 要求下一个字符为大写字符的正向前瞻
\p{Greek}
- 希腊字符。
请注意,如果您的 PCRE 实现中有 u
标志支持,这很可能是可行的方法(如 PHP、/(?=\p{Lu})\p{Greek}/u
)。
我正在尝试 select 使用正则表达式在多调希腊文本中仅使用大写字母。具体的应用程序是 PHP,但我遇到了麻烦所以我开始在 RegExr 中玩弄它:
([Α-ΩΗΙΟΥΩᾼῌῼΡΆΈΉΊΌΎΏᾺῈῊῚῸῪῺἈἘἨἸὈὨᾈᾘᾨἌἜἬἼὌὬᾌᾜᾬἊἚἪἺὊὪᾊᾚᾪἎἮἾὮᾎᾞᾮἉἙἩἹὉὙὩᾉᾙᾩῬἍἝἭἽὍὝὭᾍᾝᾭἋἛἫἻὋὛὫᾋᾛᾫἏἯἿὟὯᾏᾟᾯΪΫᾹῙῩᾸῘῨ])
当 JavaScript 引擎被 selected 时,行为符合预期。但是,如果我 select PCRE 不仅是大写字母 selected,还有一堆看似随机的小写字母。
任何人都可以阐明这里发生的事情吗?这是一个错误吗?有没有办法使用 PCRE 引擎得到想要的结果?
您需要告诉 PCRE 正则表达式引擎将输入解析为 Unicode 字符串。
在 PCRE 正则表达式中,您可以在模式前加上 (*UTF)
动词。 (*UTF)[Α-ΩΗΙΟΥΩᾼῌῼΡΆΈΉΊΌΎΏᾺῈῊῚῸῪῺἈἘἨἸὈὨᾈᾘᾨἌἜἬἼὌὬᾌᾜᾬἊἚἪἺὊὪᾊᾚᾪἎἮἾὮᾎᾞᾮἉἙἩἹὉὙὩᾉᾙᾩῬἍἝἭἽὍὝὭᾍᾝᾭἋἛἫἻὋὛὫᾋᾛᾫἏἯἿὟὯᾏᾟᾯΪΫᾹῙῩᾸῘῨ]
突出显示正确的匹配项。
但是,您也可以使用
使其更短一些(*UTF)(?=\p{Lu})\p{Greek}
这里,
(*UTF)
- 告诉 PCRE 引擎输入是 Unicode 字符串的 PCRE 动词(?=\p{Lu})
- 要求下一个字符为大写字符的正向前瞻\p{Greek}
- 希腊字符。
请注意,如果您的 PCRE 实现中有 u
标志支持,这很可能是可行的方法(如 PHP、/(?=\p{Lu})\p{Greek}/u
)。