gpt4 book ai didi

java - 在java中使用Regex获取特定的字符串列表

转载 作者:行者123 更新时间:2023-12-02 06:46:02 25 4
gpt4 key购买 nike

我的字符串看起来像这样,

lopsakf pkpsdkf pskadp fkpsdkfp sdaf
oksflksflslkf sdlf kasldfk lasdkf lsadfk
lopsakf pkpsdkf pskadp fkpsdkfp sdaf
oksflksflslkf sdlf kasldfk lasdkf lsadfk lopsakf pkpsdkf pskadp fkpsdkfp sdaf
oksflksflslkf sdlf kasldfk lasdkf lsadfk

[[test: lls]]
[[test: askd]]
[[test: mmdm]]
[[test: owow]]
[[test: www]]
[[test: wowow]]

我想获取 lls、askd、mmdm 等值并将其存储在列表中。请注意,此类文本数量巨大。我需要一种有效的方法来解析每个集合并将其存储在列表中,而不使用任何外部库。

最佳答案

您可以尝试正则表达式:

(?<=\[\[test: )[^]]+

另一方面,您需要使用常量 java.util.regex.Pattern为了避免每次都重新编译表达式,类似这样:

private static final Pattern REGEX_PATTERN = 
Pattern.compile("(?<=\\[\\[test: )[^]]+");

public static void main(String[] args) {
String input = "lopsakf pkpsdkf pskadp fkpsdkfp sdaf\noksflksflslkf sdlf kasldfk lasdkf lsadfk \nlopsakf pkpsdkf pskadp fkpsdkfp sdaf\noksflksflslkf sdlf kasldfk lasdkf lsadfk lopsakf pkpsdkf pskadp fkpsdkfp sdaf\noksflksflslkf sdlf kasldfk lasdkf lsadfk \n\n[[test: lls]]\n[[test: askd]]\n[[test: mmdm]]\n[[test: owow]]\n[[test: www]]\n[[test: wowow]]";

Matcher matcher = REGEX_PATTERN.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group());
}
}

输出:

lls
askd
mmdm
owow
www
wowow

使用 matcher.find()matcher.group() 获取所需的字符串。

以另一种方式,使用 java.util.ArrayList 的实例根据可能存在的字符串数量,已经定义了初始容量,这样列表就不需要将元素复制到新的内部数组中。

关于java - 在java中使用Regex获取特定的字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625462/

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