我想查找方括号中是否包含特定单词。如果找到了该单词,我想在该特定括号旁边加上一个单引号。
这是我的尝试:
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获取该特定括号之后的单引号?
答案 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));
}
答案 1 :(得分:1)
像下面这样的简单正则表达式(content2
后跟'\w+'
的组)应该可以工作:
Matcher m = Pattern.compile("\\(content2\\)('\\w+')").matcher(content);
while (m.find()) {
System.out.println(m.group(1)); // it gives 'second'
}