gpt4 book ai didi

java - 使用正则表达式提取标签和标签之间的文本

转载 作者:行者123 更新时间:2023-11-30 02:46:23 24 4
gpt4 key购买 nike

我正在尝试使用正则表达式提取 XML 标签和标签内的文本。我知道使用正则表达式不是最好的选择。我的内联文本文件中只有很少的标签,因此没有选择 XML 解析器。

 String txt="American Airlines made <TRIPS> 100 </TRIPS> flights in <DATE> December </DATE> over <ROUTE> Altantic </ROUTE> ";

String re1="<([^>]+)>"; // Tag 1
String re2="([^<]*)"; // Variable Name 1
String re3="</([^>]+)>"; // Tag 2
// String re3 = re1;


Pattern p = Pattern.compile(re1+re2+re3,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(txt);
if (m.find())
{
String tag1=m.group(1);
String var1=m.group(2);

System.out.println(tag1.toString());
System.out.println(var1.toString());
}

问题是,它只识别第一个标签,而不识别第二个或后续标签。

电流输出

TRIPS
100

期望的输出

TRIPS
100
DATE
December
ROUTE
Altantic

最佳答案

请将 if 更改为 while :

String txt = "American Airlines made <TRIPS> 100 <TRIPS> flights in <DATE> December </DATE> over <ROUTE> Altantic </ROUTE> ";

String re1 = "<([^>]+)>"; // Tag 1
String re2 = "([^<]*)"; // Variable Name 1
// String re3="</([^>]+)>"; // Tag 2
String re3 = re1;

Pattern p = Pattern.compile(re1 + re2 + re3, Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(txt);
while (m.find()) {
String tag1 = m.group(1);
String var1 = m.group(2);

System.out.println(tag1.toString());
System.out.println(var1.toString());
}

关于java - 使用正则表达式提取标签和标签之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40078674/

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