Java 正则表达式中的 POSIX 字符等效项

发布于 2024-11-19 07:40:26 字数 157 浏览 6 评论 0原文

我想在 Java 中使用这样的正则表达式:[[=a=][=e=][=i=]]

但是 Java 不支持 POSIX 类[=a=]、[=e=] 等

我该怎么做?更准确地说,有没有办法不使用 US-ASCII?

I would like to use a regular expression like this in Java : [[=a=][=e=][=i=]].

But Java doesn't support the POSIX classes [=a=], [=e=] etc.

How can I do this? More precisely, is there a way to not use US-ASCII?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

山色无中 2024-11-26 07:40:26

Java 确实支持 posix 字符类。只是语法不同,例如:

\p{Lower}
\p{Upper}
\p{ASCII}
\p{Alpha}
\p{Digit}
\p{Alnum}
\p{Punct}
\p{Graph}
\p{Print}
\p{Blank}
\p{Cntrl}
\p{XDigit}
\p{Space}

Java does support posix character classes. The syntax is just different, for instance:

\p{Lower}
\p{Upper}
\p{ASCII}
\p{Alpha}
\p{Digit}
\p{Alnum}
\p{Punct}
\p{Graph}
\p{Print}
\p{Blank}
\p{Cntrl}
\p{XDigit}
\p{Space}
空心空情空意 2024-11-26 07:40:26

引用自 http://download.oracle .com/javase/1.6.0/docs/api/java/util/regex/Pattern.html

POSIX 字符类(仅限 US-ASCII)

\p{Lower}   A lower-case alphabetic character: [a-z]
\p{Upper}   An upper-case alphabetic character:[A-Z]
\p{ASCII}   All ASCII:[\x00-\x7F]
\p{Alpha}   An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit}   A decimal digit: [0-9]
\p{Alnum}   An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct}   Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}   A visible character: [\p{Alnum}\p{Punct}]
\p{Print}   A printable character: [\p{Graph}\x20]
\p{Blank}   A space or a tab: [ \t]
\p{Cntrl}   A control character: [\x00-\x1F\x7F]
\p{XDigit}  A hexadecimal digit: [0-9a-fA-F]
\p{Space}   A whitespace character: [ \t\n\x0B\f\r]

Quoting from http://download.oracle.com/javase/1.6.0/docs/api/java/util/regex/Pattern.html

POSIX character classes (US-ASCII only)

\p{Lower}   A lower-case alphabetic character: [a-z]
\p{Upper}   An upper-case alphabetic character:[A-Z]
\p{ASCII}   All ASCII:[\x00-\x7F]
\p{Alpha}   An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit}   A decimal digit: [0-9]
\p{Alnum}   An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct}   Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}   A visible character: [\p{Alnum}\p{Punct}]
\p{Print}   A printable character: [\p{Graph}\x20]
\p{Blank}   A space or a tab: [ \t]
\p{Cntrl}   A control character: [\x00-\x1F\x7F]
\p{XDigit}  A hexadecimal digit: [0-9a-fA-F]
\p{Space}   A whitespace character: [ \t\n\x0B\f\r]
路弥 2024-11-26 07:40:26

复制自此处

Java不支持POSIX括号
表达式,但支持 POSIX
使用 \p 的字符类
操作员。虽然 \p 语法是
借用了 Unicode 的语法
属性,Java 中的 POSIX 类
只匹配 ASCII 字符
如下所示。类名是
区分大小写。与 POSIX 不同
只能在 a 内部使用的语法
括号表达式,Java的\p可以
内外支架使用
表达式。

Copied from here

Java does not support POSIX bracket
expressions, but does support POSIX
character classes using the \p
operator. Though the \p syntax is
borrowed from the syntax for Unicode
properties, the POSIX classes in Java
only match ASCII characters as
indicated below. The class names are
case sensitive. Unlike the POSIX
syntax which can only be used inside a
bracket expression, Java's \p can be
used inside and outside bracket
expressions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文