2011-07-07 22 views
4

我想在Java中使用像這樣的正則表達式:[[=a=][=e=][=i=]]
Java正則表達式中的POSIX字符等效項

但是Java不支持POSIX類[=a=], [=e=] etc

我該怎麼做?更確切地說,有沒有辦法不使用US-ASCII?

+2

請不要將第三方統計跟蹤器添加到您的帖子。謝謝。 –

回答

10

的Java不支持posix character classes。語法不同,例如:

\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} 
+0

US ASCII只要。有沒有辦法使用一些地區? – Stephan

+0

@Stephan,不幸的是我沒有辦法知道。您始終可以手動匹配[unicode characters](http://stackoverflow.com/questions/917774/java-regex-support-for-non-ascii-values),但要創建自己的字符組。 –

1

here

複製的Java不支持POSIX支架 表達式,但不支持使用\ p 操作POSIX 字符類。儘管從Unicode 屬性的語法中借用的\ p語法爲 ,但Java 中的POSIX類只與以下所示的 匹配ASCII字符。類名是 區分大小寫。與POSIX 語法不同,該語法只能在 括號表達式中使用,Java的\ p可以是 ,用於括號 表達式內部和外部。

+0

Tks爲及時回覆,但有沒有辦法使用一些地區? – Stephan

5

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 !"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~ 
\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] 
+0

哈,我喜歡我們如何引用地方。 –

+0

大聲笑,沒有辦法使用另一套,而不是隻使用US-ASCII? – Stephan

+0

我認爲POSIX也只允許ASCII,我錯了嗎?這對於希望posix處理unicode的用戶來說肯定是一個便箋。 –