我正在尝试使用Regex从字符串中提取值并将其用于进一步处理。 我的字符串是:
String tring =Format_FRMT: <<<$gen>>>(((valu e))) <<<$gen>>>(((value 13231)))
<<<$gen>>>(((value 13231)))
我所做的正则表达式是:
Pattern p = Pattern.compile("\\<{3}\\$([\\w ]+)\\>{3}\\s?\\({3}([\\w ]+)\\){3}");
当我运行整个程序时
Matcher m = p.matcher(tring);
String[] try1 = new String[m.groupCount()];
for(int i = 1 ; i<= m.groupCount();i++)
{
try1[i] = m.group(i);
//System.out.println("group - i" +try1[i]+"\n");
}
我正在
找不到匹配
有人可以帮我这个吗?究竟哪里出错了? 我的第一个目标只是看看我是否能够获得相应组中的值。如果工作正常,那么我想用它们进行进一步处理。
由于
答案 0 :(得分:3)
以下是如何使用find()
:
String tring = "CHARDATA_FRMT: <<<$gen>>>(((valu e))) <<<$gen>>>(((value 13231)))\n<<<$gen>>>(((value 13231)))";
Pattern p = Pattern.compile("<{3}\\$([\\w ]+)>{3}\\s?\\({3}([\\w ]+)\\){3}");
Matcher m = p.matcher(tring);
while (m.find()){
System.out.println("Gen: " + m.group(1) + ", and value: " + m.group(2));
}
请参阅IDEONE demo
请注意,您不必在Java正则表达式中转义<
和>
。
答案 1 :(得分:2)
创建Cookie::$domain
之后,在引用其组之前,您必须调用其中一种尝试实际匹配的方法,例如Matcher
,find
或{{1} }。例如:
matches
您应该阅读Matcher类上的javadoc,以确定上述哪种方法对您的数据和应用程序有意义。 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html