我需要一个模式匹配器来获取来自http响应主体的下面文本中的页面id值。Java匹配类
<meta name="ajs-page-id" content="262250">
我后来得到的内容值总是在responsebody中生成的。
我需要一个模式匹配器来获取来自http响应主体的下面文本中的页面id值。Java匹配类
<meta name="ajs-page-id" content="262250">
我后来得到的内容值总是在responsebody中生成的。
Pattern pat = Pattern.compile("<meta\\sname=\"ajs-page-id\"\\scontent=\"(\\d+)\">");
这显然是一个非常字面的模式...但组(1)应该返回数字作为字符串。 还没有测试过。
使用像jsoup这样的HTML解析器来解析和搜索零件。你不应该为此使用正则表达式。
例如,
String htmlStr = "<meta name=\"ajs-page-id\" content=\"262250\">";
Document doc = Jsoup.parse(htmlStr);
Element meta = doc.select("meta[name=ajs-page-id]").first();
if (meta != null)
{
System.out.println(meta.attr("content"));
}
这几乎肯定是更安全的,但取决于您计划用输入文本做什么,正则表达式几乎肯定会更快,并在内存中创建较少的对象。如果你很好地了解你的输入文本的范围,那么也可能不那么不安全。它是一种权衡,正如软件开发中的一切。为了安全起见,牺牲一些记忆和速度通常是可以的,但它并不适用于每个人(即我工作的公司非常关心性能)。 – gnomed
那么你可能错过了提问者,因为他声称它不再在(现在删除的)“答案”中工作。我敢打赌,标签并没有停留在这种模式下,这就是为什么它不起作用,为什么它不得不被解析。我同意,如果_I_知道它永远不会改变,我可能会恢复使用正则表达式,但因为它似乎并非如此,所以这将是最好的选择。 –
我给它一个镜头,我可以添加机体响应这样:匹配= pattern.matcher(bodyResponse)或者我需要将其打入行? – user979587
可能应该使用'\\ s +'也不能保证属性按顺序显示,尽管如此。 – MeBigFatGuy
@ user979587你应该可以在整个文本上运行它。对matcher.find()的重复调用将按顺序遍历每个事件。 – gnomed