如何在括号内获取String。请参阅下面的代码。
dropzone
我需要String str = "C1<C2, C3<T1>>.C4<T2>.C5"
,C1<C2, C3<T1>>
和C4<T2>
。
请参阅我在下面尝试的代码
C5
但结果是
Pattern pat = Pattern.compile("(\\w+(<[^>]+>)?)(.\\w+(<[^>]+>)?)*");
Matcher mat = pat.matcher(str);
答案 0 :(得分:2)
我在您的代码中看到了两个问题:
System.in
进行迭代
通过比赛清单。将您的模式简化为while(mat.find())
,以获得\\w+(<[^>]+>+)?
,C1<C2, C3<T1>>
和C4<T2>
。
RegEx模式解释:
C5
= 1个或更多字母数字或下划线字符w+
=括号中的0或1 ()?
=匹配<
字符<
= 1个或多个字符设置字符,直到[^>]+
字符>
= 1个或多个>+
字符(如果您只想强制执行一个或两个>
字符,则替代方法为>{1,2}
。)您生成的代码应如下所示:
>
如果您只想要一个部件列表,更简单的方法是使用public static void main(String[] args)
{
String str = "C1<C2, C3<T1>>.C4<T2>.C5";
Pattern pat = Pattern.compile("\\w+(<[^>]+>+)?");
Matcher mat = pat.matcher(str);
while(mat.find()) {
System.out.println(mat.group());
}
}
而不是RegEx。您可以在split()
上拆分字符串,将数据保存在数组中,然后根据需要迭代数组。
这将通过以下方式实现:
.
答案 1 :(得分:1)
只是分开点:
String[] parts = str.split("\\.");
这可以使用问题中的示例输入执行您想要的操作。