2013-09-25 28 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

相关问题