2

给定_<A_>_<B_>_<Z_>,我想提取A, B, C一个数组。

基本上_<是起始定界符,_>也是结束定界符。

4

4 回答 4

5

您可以使用环视断言仅匹配标签的内容。

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));
}
于 2012-04-13T07:20:56.573 回答
3

这很简单 - 剪掉第一个开头和最后一个关闭,然后将其拆分为 close-open

string.replaceFirst( "^_<(.*)_>$", "$1" ).split( "_>_<" );
于 2012-04-13T06:38:53.480 回答
-2

您使用捕获组提取它们。

于 2012-04-13T06:36:24.553 回答
-2

拆分_<得到 2 个元素,取第 2 个并拆分_>得到 2 个元素,取第一个并拆分_>_<得到 A、B、C

于 2012-04-13T06:36:34.063 回答