相关疑难解决方法(0)

正则表达式以匹配不同Unicode脚本之间的边界

正则表达式引擎具有"零宽度"匹配的概念,其中一些对于查找单词边缘很有用:

  • \b - 存在于大多数引擎中以匹配单词和非单词字符之间的任何边界
  • \<\>- 并且- 在Vim中仅分别匹配单词开头的边界和单词的结尾处的边界.

一些正则表达式引擎中的新概念是Unicode类.一个这样的类是脚本,可以区分拉丁语,希腊语,西里尔语等.这些例子都是等价的,匹配希腊语书写系统的任何字符:

  • \p{greek}
  • \p{script=greek}
  • \p{script:greek}
  • [:script=greek:]
  • [:script:greek:]

但到目前为止,在我阅读正则表达式和Unicode的来源时,我还无法确定是否有任何标准或非标准方法来实现零宽度匹配,其中一个脚本结束而另一个脚本开始.

在串????会有的之间的匹配??人物,就如同\b\<会只是之前匹配?字符.

现在,对于这个例子,我可以根据寻找\p{Greek}后面的\p{Han}东西一起破解,我甚至可以根据两个Unicode脚本名称的所有可能组合来一起破解.

但这不是一个确定性的解决方案,因为每个版本仍然会在Unicode中添加新脚本.是否有一种面向未来的方式来表达这一点?或者是否有建议添加它?

regex unicode word-boundary word-boundaries character-properties

8
推荐指数
1
解决办法
679
查看次数