2013-09-25 29 views
0

我正在嘗試搜索兩個單詞之間的單詞,並使用Java中的Pattern類。到目前爲止,我的代碼是:如何在Pattern類中使用變量而不是字符串?

Pattern pattern = Pattern.compile("(?<=PlaintiffAtty_0).*?(?=</span>)"); 
Matcher matcher = pattern.matcher(sourcecode.toString()); 

     while (matcher.find()) { 
      System.out.println(matcher.group().toString()); 

的第一圖案字「PlaintiffAtty_0」將被改變,因爲數量將增加,所以我想用它作爲一個變量。如何在那裏插入一個變量,而不是每次都必須更改字符串?

回答

3

使用字符串連接和Pattern.quote,以確保字符串內的任何特殊字符是從字面上處理:

Pattern.compile("(?<="+Pattern.quote(myString)+").*?(?=</span>)"); 

其中myString是一個變量,一個方法調用,以陣列的訪問等

+3

只是['Pattern.quote'](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#quote(java.lang.String))輸入'String '。魔法。 –

+0

@BoristheSpider你說得對,我認爲''Pattern.quote'是''\\ Q「+ str +」\\ E「'的一個奇特名字,[但這並非完全正確](http:// grepcode。 COM /文件/ repository.grepcode.com/JAVA /根/ JDK /的openjdk/6-B14/JAVA/util的/正則表達式/ Pattern.java)。我刪除了我的答案,並用你的建議編輯了這個答案。謝謝! – dasblinkenlight

相關問題