gpt4 book ai didi

java - 使用 Java 中的模式和匹配器搜索字符串中的元素

转载 作者:行者123 更新时间:2023-12-01 13:25:10 25 4
gpt4 key购买 nike

我正在尝试使用 Java 中的模式和匹配器搜索字符串中的元素。

我有一个节点变体项目,需要获取这些节点之间的所有字符。我尝试了下面的正则表达式,但它完全跳过了这一行。但是,如果我在 Notepad++ 中使用相同的正则表达式进行搜索,我会选择所需的结果。请指教。

<variant-items>((.|\n)*)</variant-items>

下面是我的实现

String patternSourceComponent = "<variant-items>((.|\n)*)</variant-items>";
String result=this.isMatched(patternSourceComponent, xml);

public String isMatched(String patternSourceComponent,String xml)
{
String varientItem="";
try{ Pattern patternComponent = Pattern.compile(patternSourceComponent);
Matcher matcherComponent = patternComponent.matcher(xml);

System.out.println("matcherComponent Find : "+matcherComponent.find());
while (matcherComponent.find()) {
varientItem=matcherComponent.group(0).trim();
System.out.println("varientItem : "+varientItem);
} }
catch (Exception e)
{
System.out.println("Exception : "+e);
}

return varientItem;
}

最佳答案

我个人会使用Java DOM检查您的节点。对 XML 使用正则表达式是一场噩梦,任何尝试使用它的代码将来很可能会崩溃。尝试这样的方法来获取“variant-items”节点的字符串内容。

File xmlFile = new File("your_xml.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);

NodeList nList = doc.getElementsByTagName("variant-items");
for (int i = 0; i < nList.getLength(); i++) {
Node node = nList.item(i);
System.out.println(node.getNodeValue());
}

上面的代码打印 xml 文件中所有“variant-items”节点的值。

如果资源/速度考虑是一个问题(例如当 your_xml.xml 很大时),您最好使用 SAX ,速度更快(代码密集一些)并且不会将 XML 存储在内存中。

关于java - 使用 Java 中的模式和匹配器搜索字符串中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834286/

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