正则表达式匹配器 - 未找到匹配项
Regex matcher - No match found
我正在尝试使用 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");
}
我得到
No match found
有人可以帮我解决这个问题吗?这究竟是哪里出了问题?
我的第一个目标只是看看我是否能够获得相应组中的值。如果一切正常,那么我想将它们用于进一步处理。
谢谢
在创建 Matcher
之后引用其组之前,您必须调用尝试实际匹配的方法之一,例如 find
、matches
或 lookingAt
。例如:
Matcher m = p.matcher(tring);
if (!m.find()) return; // <---- Add something like this
String[] try1 = new String[m.groupCount()];
您应该阅读 Matcher class 上的 javadoc 以确定上述哪些方法对您的数据和应用程序有意义。 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html
这里有一个例子,说明如何使用 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 正则表达式中转义 <
和 >
。
我正在尝试使用 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");
}
我得到
No match found
有人可以帮我解决这个问题吗?这究竟是哪里出了问题? 我的第一个目标只是看看我是否能够获得相应组中的值。如果一切正常,那么我想将它们用于进一步处理。
谢谢
在创建 Matcher
之后引用其组之前,您必须调用尝试实际匹配的方法之一,例如 find
、matches
或 lookingAt
。例如:
Matcher m = p.matcher(tring);
if (!m.find()) return; // <---- Add something like this
String[] try1 = new String[m.groupCount()];
您应该阅读 Matcher class 上的 javadoc 以确定上述哪些方法对您的数据和应用程序有意义。 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html
这里有一个例子,说明如何使用 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 正则表达式中转义 <
和 >
。