使用Java在特定括号后查找内容

时间:2018-07-23 05:48:42

标签: java

我想查找方括号中是否包含特定单词。如果找到了该单词,我想在该特定括号旁边加上一个单引号。

这是我的尝试:

 import java.io.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;

 class Test 
 {
        public static void main(String[]args) throws IOException 
        {
        String content ="(content1)'first' is the first to find then  (content2)'second' and so on";
        Matcher m = Pattern.compile("\\((.*?)\\)").matcher(content);
          while(m.find()) 
          {
              if(m.group(1).contains("content2")) 
              {  
                   System.out.println(m.group(1)); 
                  //it gives content2,want to get 'second'
              }
          }
       }
   }

问题:我在括号内找到了特定的单词。现在,如何使用Java获取该特定括号之后的单引号?

2 个答案:

答案 0 :(得分:3)

我们可以使用否定的后向句来满足您的要求,该句法断言(content2)出现在单引号中的单词之前:

(?<=\(content2\))'(.*?)'

然后,您真正想要的词应该在第一个捕获组中可用。这是一个工作脚本:

String content ="(content1)'first' is the first to find then
    (content2)'second' and so on";
Matcher m = Pattern.compile("(?<=\\(content2\\))'(.*?)'").matcher(content);
while (m.find()) {
    System.out.println(m.group(1));
}

Demo

答案 1 :(得分:1)

像下面这样的简单正则表达式(content2后跟'\w+'的组)应该可以工作:

Matcher m = Pattern.compile("\\(content2\\)('\\w+')").matcher(content);
while (m.find()) {
    System.out.println(m.group(1)); // it gives 'second'
}