gpt4 book ai didi

java - 在java/android中使用正则表达式提取序列后的所有字符

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

想象一下这些字符串:

String s = "firstpartie_FOO_lastpartieofthestring"

String s = "lllalal_FOOBBARR_lastpartieofthestringofthedead"

使用正则表达式,我想提取第二个“_”之后的字符串。

我已经尝试过这个:

Pattern p = Pattern.compile("(?<=_[A-Z]*_)");
Matcher m = p.matcher("lllalal_FOOBBARR_lastpartieofthestringofthedead")

但是如何完成正则表达式来提取字符串“lastpartieofthestringofthedead”?

最佳答案

如果您想修复您的方法,请使用捕获组捕获字符串的其余部分:

String s = "lllalal_FOOBBARR_lastpartieofthestringofthedead";
Pattern p = Pattern.compile("^[^_]*_[^_]*_(.*)", Pattern.DOTALL);
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group(1));
}
// => lastpartieofthestringofthedead

请参阅Java demo

这里,^[^_]*_[^_]*_(.*) 匹配字符串的开头 (^),0+ 个字符_ ([^_]*)、_,同样是除 _ 之外的 0+ 个字符和 >_,然后将字符串的其余部分捕获到组 1 中(使用 (.*))。

否则,用 _ 分成 3 部分:

String s = "lllalal_FOOBBARR_lastpartieofthestring_of_thedead";
String[] res = s.split("_", 3);
if (res.length > 2) {
System.out.println(res[2]);
}
// => lastpartieofthestring_of_thedead

参见another demo

关于java - 在java/android中使用正则表达式提取序列后的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42543603/

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