簡體   English   中英

無效的轉義序列

[英]Invalid escape sequence

我想過濾掉所有單詞,這些單詞包含1個數字和3個大寫字母,總長度為4。在這里查看我的示例: http : //gskinner.com/RegExr/?32taa

ArrayList<String> result = new ArrayList<String>();


for(int i = 0; i <= 10; i++){

    String message = resp.data.get(i).message;

    Matcher m = MY_PATTERN.matcher("\b(?=[^\d]*\d[^\d]*)[A-Z\d]{4}\b");

        while (m.find()) {
            String s = m.group(1);
            result.add(s);
        }
}

但是當我將正則表達式模式傳遞給matcher方法時,出現錯誤:

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )

我是否需要將\\d換成另一個字母?

Regex不適用於String ...

因此,您需要使用\\\\d而不是\\d

-當您編寫\\ java時,它期望nbta以及其他幾個符號…… 之后 ,但是當您給d它會給它帶來生命的震撼,並想一想到底。.我什么都不知道關於\\d ,因此我們需要告訴java \\ 應該按字面意義取而代之,而不是期望它作為轉義符。

-如果是 (點)當您輸入"."時,情況變得更加復雜"." java從字面上理解它,但是它是一個正則表達式,因此您需要使其看起來像這樣,因此在其前面加上\\ ,因此它變為\\. ,現在又出現了與以前的問題相同的問題,因為現在Java在\\之后接受nb等,但它得到一個"." ,因此我們再次為它加上另一個\\前綴,現在它變成\\\\.

在Java中,你需要躲避backslash加上額外的反斜杠,表示字符串的模式時。

因此, \\b應該是\\\\b ,而\\d應該是\\\\d

您的代碼有兩個問題:

使用正則表達式模式

\\b(?=[A-Z]*\\d[A-Z]*\\b)[A-Z\\d]{4}\\b

暫無
暫無

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

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