gpt4 book ai didi

java - 在java中查找子字符串模式

转载 作者:行者123 更新时间:2023-11-29 05:35:01 26 4
gpt4 key购买 nike

我有如下场景,

从一个字符串中需要提取的子串很少,

例子:主字符串:

<title><spring:message code='cdc.header.title'/><br></span><span><p></p> <spring:message code='cdc.accessdenied.title'/></title>

所以我需要提取<spring:message code='cdc.header.title'/>,<spring:message code='cdc.accessdenied.title'/> ,

我的意思是那里有什么 spring 标签,我想检索那些子字符串作为 List<String> ,

我不想使用 XML 解析器,我想使用 java PATTERN 匹配器,因为我的文件可能格式不正确。

请帮我解决这个问题。谢谢

最佳答案

使用这种方法,只需一行代码即可完成(根据评论更新了新要求):

List<String> springTags = Arrays.asList(str.replaceAll("(?s)^.*?(?=<spring)|(?<=/>)(?!.*<spring).*?$", "").split("(?s)(?<=/>).*?(?=<spring|$)"));

这通过首先剥离任何前导和尾随的 xml 包装/字符,然后拆分 xml 结束/开始标记来工作。它实际上会从任何类型的输入中提取所有 spring 标签——无论在 spring 标签之前或之后出现的都被丢弃。

下面是一些测试代码:

String str = "<title><spring:message code='cdc.header.title'/> <span></span></br><spring:message code='cdc.accessdenied.title'/></title>";
List<String> springTags = Arrays.asList(str.replaceAll("^.*?(?=<spring)|(?<=/>)(?!.*<spring).*?$", "").split("(?<=/>).*?(?=<spring|$)"));
System.out.println(springTags);

输出:

[<spring:message code='cdc.header.title'/>, <spring:message code='cdc.accessdenied.title'/>]

关于java - 在java中查找子字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19828799/

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