Java 用正则表达式提取数据

Java 用正则表达式提取数据,java,regex,Java,Regex,我试图摘录以下句子: str="<a href=\"https://blabla.com/truck\">truck</a> A wheeled, powered motor vehicle used for transportation." 找不到使用正则表达式正常提取句子的方法,每次都会遗漏一些内容 编辑:所需结果的结构是“”符号前的单词,以及紧跟其后的句子的其余部分(单词是随机的,句子也是随机的)。在这种情况下,只需删除”,“”); 但通常避免使用正则表达式解

我试图摘录以下句子:

str="<a href=\"https://blabla.com/truck\">truck</a> A wheeled, powered motor vehicle used for transportation."
找不到使用正则表达式正常提取句子的方法,每次都会遗漏一些内容


编辑:所需结果的结构是“
”符号前的单词,以及紧跟其后的句子的其余部分(单词是随机的,句子也是随机的)。

在这种情况下,只需删除
之间的文本即可:

String str="<a href=\"https://blabla.com/truck\">truck</a> A wheeled, powered motor vehicle used for transportation.";
System.out.println(str.replaceAll("<[^>]*>", ""));
String str=“一种用于运输的轮式机动车辆。”;
System.out.println(str.replaceAll(“]*>”,“”);

但通常避免使用正则表达式解析HTML。它有许多潜在的问题。您可以在此处阅读有关它们的信息:

使用合适的解析器,这样可以为您完成所有的艰苦工作

String str="<a href=\"https://blabla.com/truck\">truck</a> A wheeled, powered motor vehicle used for transportation.";
Document doc = Jsoup.parse(str);
String text = doc.text();//get text which this HTML structure will generate in browser
System.out.println(text);
String str=“一种用于运输的轮式机动车辆。”;
Document doc=Jsoup.parse(str);
字符串text=doc.text()//获取此HTML结构将在浏览器中生成的文本
System.out.println(文本);
结果:
卡车用于运输的轮式机动车辆。

我不能在这个项目中使用jsoup库,有没有办法将它与正则表达式一起使用?通常,使用正则表达式解析复杂的XML/HTML是非常糟糕的选择,所以答案取决于文本的复杂性。您可能需要更新您的问题,其中可能包含有关要解析的结构的所有详细信息。您可以简单地尝试删除
之间存在的所有内容,但如果您可能有一些
部分,这可能会失败。@gb051我更新了我的答案,为这种情况提供了简单的解决方案,但我不能保证这将适用于您的其他情况。在正则表达式中,将“?”放在“*”之后,使正则表达式不那么贪婪。@gonbe为什么?我使用
[^>]*
正是为了避免
*?
及其回溯。您能展示一下您迄今为止的尝试吗?你能提取
truck
和后面的内容并将它们连接在一起吗?
String str="<a href=\"https://blabla.com/truck\">truck</a> A wheeled, powered motor vehicle used for transportation.";
Document doc = Jsoup.parse(str);
String text = doc.text();//get text which this HTML structure will generate in browser
System.out.println(text);