5

我有一个长字符串,我必须为不同的关键字解析。例如,我有字符串:

"==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));
}
4

1 回答 1

4

你不需要逃避这个=标志。你还应该在你的字符类中包含一个空格。

除此之外,您还需要在字符类上使用量词来匹配多次出现。试试这个正则表达式:

Pattern pattern = Pattern.compile("=+[A-Za-z ]+=+");

您还可以==通过使用.+?(您需要不情愿的量词 with.以阻止它匹配所有内容直到最后一个==)或[^=]+

Pattern pattern = Pattern.compile("=+[^=]+=+");

如果=两边的数量相同,那么您需要修改正则表达式以使用捕获组和反向引用:

"(=+)[^=]+\\1"
于 2013-09-18T18:08:44.163 回答