gpt4 book ai didi

Java正则表达式模式匹配多个相同标签

转载 作者:行者123 更新时间:2023-11-30 07:21:39 27 4
gpt4 key购买 nike

问题:

如何成功匹配<tag TAG1>SOME VALUE</tag TAG1><tag TAG1>ANOTHER VALUE</tag TAG1>作为 2 个单独的值?

背景:

我正在尝试匹配这样的字符串 <tag TAG1>SOME VALUE</tag TAG1><tag TAG1>ANOTHER VALUE</tag TAG1>哪里TAG1是该特定标签的名称(多个标签可以具有相同的名称但不同的值)和 SOME VALUE , ANOTHER VALUE是标签包含的不同值。

到目前为止,我能够匹配一对标签,例如 <tag TAG1>SOME VALUE</tag TAG1>使用正则表达式模式 <\\s*tag\\s*.+\\s*>(.*)</\\s*tag\\s*.+\\s*>

上面的示例是最坏的情况,没有字符分隔第一个标签的结尾和第二个标签的开头。我的问题是当我运行 find() 时使用我的正则表达式字符串,我得到两个标签,就好像它们是一个标签一样。

问题出在标签 (.*) 之间的通配符因为它不排除标签的结束/开始。我需要通配符匹配,因为任何字符(包括 \n )都可以在标签内。我也在使用Pattern.DOTALL成功匹配 1 个带有换行符的标签。

最佳答案

以下是您可以执行的操作:

String value = "<tag TAG1>SOME VALUE</tag TAG1><tag TAG1>ANOTHER VALUE</tag TAG1>";
Pattern pattern = Pattern.compile("<\\s*tag\\s*[^>]+\\s*>([^(</)]*)</\\s*tag\\s*[^>]+\\s*>");
Matcher matcher = pattern.matcher(value);
while (matcher.find()) {
System.out.println(matcher.group());
}

输出:

<tag TAG1>SOME VALUE</tag TAG1>
<tag TAG1>ANOTHER VALUE</tag TAG1>

关于Java正则表达式模式匹配多个相同标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37463732/

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