gpt4 book ai didi

Java正则表达式提取标签之间的文本

转载 作者:IT老高 更新时间:2023-10-28 11:53:04 24 4
gpt4 key购买 nike

我有一个包含一些自定义标签的文件,我想编写一个正则表达式来提取标签之间的字符串。例如,如果我的标签是:

[customtag]String I want to extract[/customtag]

我将如何编写一个正则表达式来仅提取标签之间的字符串。这段代码似乎是朝着正确方向迈出的一步:

Pattern p = Pattern.compile("[customtag](.+?)[/customtag]");
Matcher m = p.matcher("[customtag]String I want to extract[/customtag]");

不知道下一步该做什么。有任何想法吗?谢谢。

最佳答案

你在正确的轨道上。现在你只需要提取所需的组,如下:

final Pattern pattern = Pattern.compile("<tag>(.+?)</tag>", Pattern.DOTALL);
final Matcher matcher = pattern.matcher("<tag>String I want to extract</tag>");
matcher.find();
System.out.println(matcher.group(1)); // Prints String I want to extract

如果你想提取多个匹配,试试这个:

public static void main(String[] args) {
final String str = "<tag>apple</tag><b>hello</b><tag>orange</tag><tag>pear</tag>";
System.out.println(Arrays.toString(getTagValues(str).toArray())); // Prints [apple, orange, pear]
}

private static final Pattern TAG_REGEX = Pattern.compile("<tag>(.+?)</tag>", Pattern.DOTALL);

private static List<String> getTagValues(final String str) {
final List<String> tagValues = new ArrayList<String>();
final Matcher matcher = TAG_REGEX.matcher(str);
while (matcher.find()) {
tagValues.add(matcher.group(1));
}
return tagValues;
}

但是,我同意正则表达式不是这里的最佳答案。我会使用 XPath 来查找我感兴趣的元素。参见 The Java XPath API了解更多信息。

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

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