gpt4 book ai didi

java - 如何使用java正则表达式从某物获取 "something"

转载 作者:行者123 更新时间:2023-12-02 07:26:06 29 4
gpt4 key购买 nike

在下面,我需要得到:

String regex = "Item#: <em>.*</em>";
String content = "xxx Item#: <em>something</em> yyy";

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);

if( matcher.find() ) {
System.out.println(matcher.group());
}

它将打印:

Item#: <em>something</em>

但我只需要值“某物”。

我知道我可以使用 .substring(begin,end) 来获取值,但还有其他更优雅的方法吗?

最佳答案

它会打印整个字符串,因为您已经打印了它。 matcher.group()打印完整的匹配。要获取匹配字符串的特定部分,您需要更改正则表达式以捕获组中标记之间的内容:-

String regex = "Item#: <em>(.*?)</em>";

此外,请使用 Reluctant量词(.*?)匹配 </em> 之前的最少字符数遇到。

然后在 if 中打印 group(1)而不是group()

if( matcher.find() ) {
System.out.println(matcher.group(1));
}

无论如何,你不应该使用 Regex解析HTML 。正则表达式不够强大,无法完成此任务。您可能应该使用一些 HTML解析器如 - HTML Cleaner 。另请参阅 OP 中的评论之一中提供的链接。这篇文章很好地解释了您可能面临的问题。

关于java - 如何使用java正则表达式从<em>某物</em>获取 "something",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13560614/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com