使用模式查找两者之间的所有单词.如果我的边界包含字母以外的字符怎么办?


Pattern p = Pattern.compile("(\bSTARTTEXTHERE\b)(.*?)(\bENDTEXTHERE\b)");

嘿伙计们,我遇到了麻烦。我正在使用一个粗略的工作来基本学习目的,以使用URLConnection和InputStream获取所有网站数据。使用这个将所有这些转换为字符串

BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
// read each line and write to System.out
while ((line = br.readLine()) != null) 
{
website += line;
}

然后想要执行一个简单的模式/匹配器任务来查找label-part="0"></p></div>之间的所有单词(在这种情况下为推文)

我发现页面上的所有推文总是包含在这些引号之间,页面上的其他任何内容都没有这些引号,所以理论上我应该返回作为推文的字符串。 示例 : lang="en" data-aria-label-part="0">这是一个测试推文

但是此代码不起作用
Pattern p = Pattern.compile("(\bdata-aria-label-part="0">\b)(.*?)(\b</p></div>\b)");

"0"是引发错误的原因。我尝试了括号和引号,并试图制作一个字符串,该行文本,但它只接受我所知的单词。这是匹配器类的限制吗?我已经厌倦了在这里做一些研究 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html 但是我对编码很陌生,发现很难弄清楚。我觉得必须有某种方法可以将您在这些区域放置的内容视为几乎一串字符

任何帮助将不胜感激。干杯

编辑 我实际上在发布问题后直接尝试了转义引号,但这不起作用。我尝试了普通单词,它们有效。

已解决

Pattern p = Pattern.compile("data-aria-label-part="0">(.*?)</p></div>");
Matcher m = p.matcher(website);
ArrayList<String> matches = new ArrayList<String>();
while (m.find()) {
matches.add(m.group(1));
System.out.println(matches);
matches.remove(m.group(1));
}

最新更新