我正在尝试使用正则表达式从字符串中提取值并将其用于进一步处理。 我的字符串是:
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");
}
我正在获取
No match found
有人可以帮我解决这个问题吗?这究竟是哪里出了问题? 我的第一个目标只是看看我是否能够获得相应组中的值。如果工作正常,那么我想使用它们进行进一步处理。
谢谢
最佳答案
下面是如何使用 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));
}
请注意,您不必转义 <
和>
在 Java 正则表达式中。
关于java - 正则表达式匹配器 - 未找到匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32188251/