首页 > Java > java教程 > 如何重写 Java 的 \w、\b 和其他正则表达式快捷方式以实现完全 Unicode 兼容性?

如何重写 Java 的 \w、\b 和其他正则表达式快捷方式以实现完全 Unicode 兼容性?

Mary-Kate Olsen
发布: 2024-12-16 19:06:16
原创
589 人浏览过

How Can I Rewrite Java's w, b, and Other Regex Shortcuts for Full Unicode Compatibility?

在 Java 正则表达式中重写 w 和 b 以实现 Unicode 兼容性

Java 的 w 和 b 正则表达式快捷方式对 Unicode 支持有限。为了解决这个问题,您可以使用以下 Unicode 感知定义重写这些快捷方式:

\w (words) => [\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&&\p{So}]]
\W (non-words) => [^\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&&\p{So}]]

\b (word boundary) => (?:(?<=[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&amp;&amp;\p{So}]])(?![\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&amp;&amp;\p{So}]])|(?<![\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&amp;&amp;\p{So}]])(?=[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&amp;&amp;\p{So}]]))
\B (non-word boundary) => (?:(?<=[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&amp;&amp;\p{So}]])(?=[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&amp;&amp;\p{So}]])|(?<![\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&amp;&amp;\p{So}]])(?![\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&amp;&amp;\p{So}]]))
登录后复制

其他 Unicode 感知正则表达式快捷方式:


  1. u0009-u000Du0020u0085u00A0u1680u180Eu2000-u200Au2028u2029u202Fu205Fu3000
  2. u000A-u000Du0085u2028u2029
  3. u0009u0020u00A0u1680u180Eu2000u2001-u200Au202Fu205Fu3000

以上是如何重写 Java 的 \w、\b 和其他正则表达式快捷方式以实现完全 Unicode 兼容性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Regexp ShortcutUnicode-Aware Definition
s (whitespace)[u0009-u000Du0020u0085u00A0u1680u180Eu2000-u200Au2028u2029u202Fu205Fu3000]
S (non-whitespace)1
v (vertical whitespace)[u000A-u000Du0085u2028u2029]
V (non-vertical whitespace)2
h (horizontal whitespace)[u0009u0020u00A0u1680u180Eu2000-u200Au202Fu205Fu3000]
H (non-horizontal whitespace)3
d (digits)p{Nd}
D (non-digits)P{Nd}
R (line break)(?:(?>u000Du000A)[u000Au000Bu000Cu000Du0085u2028u2029])
X (extended grapheme cluster) (?>PMpM*)