簡體   English   中英

Java中的標點正則表達式

[英]Punctuation Regex in Java

首先,我閱讀了文檔如下

http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

我想找到任何標點符號,除了@',& 但我不太明白。

這是 :

public static void main( String[] args )
{       
     // String to be scanned to find the pattern.
     String value = "#`~!#$%^";
     String pattern = "\\p{Punct}[^@',&]";

    // Create a Pattern object
    Pattern r = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);

    // Now create matcher object.
    Matcher m = r.matcher(value);
    if (m.find()) {
       System.out.println("Found value: " + m.groupCount());
    } else {
       System.out.println("NO MATCH");
    }


}

結果不匹配。
有任何不匹配嗎?

謝謝
米茲克

您正在匹配兩個字符,而不是一個。 使用(負)前瞻應該可以解決這個任務:

(?![@',&])\\p{Punct}

您可以在此處使用字符減法

String pat = "[\\p{Punct}&&[^@',&]]";

整個模式表示一個字符類[...] ,其中包含一個\\p{Punct} POSIX 字符類&& 交集運算符[^...]否定字符類

如果您還計划匹配所有 Unicode 標點符號,則可能需要 Unicode 修飾符:

String pat = "(?U)[\\p{Punct}&&[^@',&]]";
              ^^^^

該模式匹配除@' ,&之外的任何標點符號(使用\\p{Punct} )。

如果您需要排除更多字符,請將它們添加到否定字符類中。 請記住始終在 Java 正則表達式字符類/集內轉義-\\^[] 例如,添加反斜杠和-可能看起來像"[\\\\p{Punct}&&[^@',&\\\\\\\\-]]""[\\\\p{Punct}&&[^@',&\\\\-\\\\\\\\]]"

Java演示

String value = "#`~!#$%^,";
String pattern = "(?U)[\\p{Punct}&&[^@',&]]";
Pattern r = Pattern.compile(pattern);    // Create a Pattern object
Matcher m = r.matcher(value);            // Now create matcher object.
while (m.find()) {
    System.out.println("Found value: " + m.group());
}

輸出:

Found value: #
Found value: !
Found value: #
Found value: %
Found value: ,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM