我有以下模式的字符串:
ab:ab:ab:1:ab ac:ac:ac:2:ac ad:ad:ad:3:ad
我必须提取3rd colon和4th colon之间的字符串。对于上面的示例字符串,结果将是"1"、"2"和"3"。在Java中,使用字符串函数来提取它的一个简短方法是什么?
3rd colon
4th colon
"1"
"2"
"3"
edqdpe6u1#
您可以直接用“:“拆分,得到第四个元素:类似于:
Stream.of("ab:ab:ab:1:ab", "ac:ac:ac:2:ac", "ad:ad:ad:3:ad") .map(s -> s.split(":")[3]) .forEach(System.out::println);
输出量:
1 2 3
aiqt4smr2#
或者,通过捕获将整个字符串替换为所需的项。
(?:.*?:){3}
:
(.*?)
.*$
$1
String[] data = { "ab:ab:ab:1:ab", "ac:ac:ac:2:ac", "ad:ad:ad:3:ad"}; for (String str : data) { System.out.println(str.replaceAll("(?:.*?:){3}(.*?):.*$","$1")); }
印刷品
2条答案
按热度按时间edqdpe6u1#
您可以直接用“:“拆分,得到第四个元素:
类似于:
输出量:
aiqt4smr2#
或者,通过捕获将整个字符串替换为所需的项。
(?:.*?:){3}
-三个不情愿字符串的非捕获组,后跟:
(.*?)
-在第3和第4结肠之间捕获目标。.*$
-字符串的其余部分到末尾。$1
-对第一个(也是唯一的)捕获组的引用印刷品