给定_<A_>_<B_>_<Z_>
,我想提取A, B, C
一个数组。
基本上_<
是起始定界符,_>
也是结束定界符。
您可以使用环视断言仅匹配标签的内容。
String text = "_<A_>_<B_>_<Z_>";
List<String> Result = new ArrayList<String>();
Pattern p = Pattern
.compile("(?<=_<)" + // Lookbehind assertion to ensure the opening tag before
".*?" + // Match a less as possible till the lookahead is true
"(?=_>)" // Lookahead assertion to ensure the closing tag ahead
);
Matcher m = p.matcher(text);
while(m.find()){
Result.add(m.group(0));
}
这很简单 - 剪掉第一个开头和最后一个关闭,然后将其拆分为 close-open
string.replaceFirst( "^_<(.*)_>$", "$1" ).split( "_>_<" );
您使用捕获组提取它们。
拆分_<
得到 2 个元素,取第 2 个并拆分_>
得到 2 个元素,取第一个并拆分_>_<
得到 A、B、C