我有一个Long字符串,我必须解析不同的关键字。例如,我有字符串:
"==References== This is a reference ==Further reading== *{{cite book|editor1-last=Lukes|editor1-first=Steven|editor2-last=Carrithers|}} * ==External links=="
我的关键字是
'==References==' '==External links==' '==Further reading=='
我尝试了很多正则表达式的组合,但我无法恢复所有字符串。
我试过的代码:
Pattern pattern = Pattern.compile("\\=+[A-Za-z]\\=+");
Matcher matcher = pattern.matcher(textBuffer.toString());
while (matcher.find()) {
System.out.println(matcher.group(0));
}
答案 0 :(得分:4)
您无需转义=
符号。而且你还应该在角色类中包含一个空格。
除此之外,您还需要在角色类上使用量词来匹配多次出现。试试这个正则表达式:
Pattern pattern = Pattern.compile("=+[A-Za-z ]+=+");
您还可以使用==
增加接受两个.+?
之间任意字符的灵活性(您需要使用.
不情愿的量词来阻止它匹配所有内容直到最后==
)或[^=]+
:
Pattern pattern = Pattern.compile("=+[^=]+=+");
如果双方=
的数量相同,则需要修改正则表达式以使用捕获组和反向引用:
"(=+)[^=]+\\1"