2012-06-28 41 views
6

任何人都可以幫助我在java中爲變量創建正則表達式,這樣字符串變量將被視爲不區分大小寫,並替換每個單詞,如Access,等WINDOWS的任何事情呢?不區分大小寫字符串的變量replaceAll(,)方法Java

這是代碼:

$html=html.replaceAll(label, "WINDOWS"); 

注意,標籤是一個字符串變量。

+4

爲什麼不簡單地將一個不區分大小寫的字符串添加到標籤String? '「(?i)」' –

+0

@pst:抱歉,弄錯了。編輯我的評論。 –

+0

也許還請注意replaceAll作爲第一個參數需要什麼......然後將其作爲答案發布? ;-) – 2012-06-28 00:36:47

回答

23

只是「不區分大小寫」開關添加到正則表達式:

html.replaceAll("(?i)"+label, "WINDOWS"); 

注意:當標籤是一個正則表達式本身時,請仔細考慮,例如,假設標籤爲".*"

+3

有一個引用標籤的函數,以確保它被視爲文字。 'Pattern.quote()'http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern。HTML#報價(java.lang.String中) – nhahtdh

1

只需使用模式和匹配器。這裏是代碼

Pattern p = Pattern.compile("Your word", Pattern.CASE_INSENSITIVE); 
Matcher m = p.matcher("String containing words"); 
String result = m.replaceAll("Replacement word"); 

使用模式很容易,因爲它們不區分大小寫。

欲瞭解更多信息,請參閱

Matchmaking with regular expressions

Java: Pattern and Matcher

+0

這是怎麼回事? str.replaceAll(reg,replacement)與Pattern.compile(reg).matcher(str).replaceAll(替換)完全相同 – anttix

+0

使用匹配器不區分大小寫。請參閱javaworld中的文章 –

+0

@SriHarshaChilakapati「這取決於」。與anttix的答案比較。 – 2012-06-28 00:55:44

7

String.replaceAll是等效於創建一個匹配,並調用它的replaceAll方法,所以你可以做這樣的事情,使其不區分大小寫:

html = Pattern.compile(label, Pattern.CASE_INSENSITIVE).matcher(html).replaceAll("WINDOWS"); 

見:String.replaceAll和 周Pattern.compile的JavaDoc

+0

對大字符串使用不區分大小寫(與Java的默認區分大小寫敏感的replace()方法相反)是否會對內存/性能產生重大影響?例如,包含預定義標籤(變量)的文檔可以基於某些應用邏輯動態替換。 –

0

我想,但我不知道你想標籤是像[Aa][cC][cC][eE][sS][sS]

或交替做

html = Pattern.compile(lable, Pattern.CASE_INSENSITIVE) 
     .matcher(html).replaceAll("WINDOWS"); 
相關問題