Java正则表达式第一匹配字符
实际上我想得到ref和alias双引号之间所有数据的值。我们也构建了正则表达式。但我面临的问题是alias,它不匹配第一个双引号,而是匹配最后一个双引号。我只需要第一个双引号的数据Java正则表达式第一匹配字符,java,regex,pattern-matching,Java,Regex,Pattern Matching,实际上我想得到ref和alias双引号之间所有数据的值。我们也构建了正则表达式。但我面临的问题是alias,它不匹配第一个双引号,而是匹配最后一个双引号。我只需要第一个双引号的数据 String text = "ref=\"ar\" alias=\"as sa\" value=\"asa\""; 在第一次匹配中,将获取两个参数,在第二次匹配中,将获取引号中的数据 当前结果: “ar” “作为sa”value=“asa” 所需结果: “ar” “作为sa”尝试String patternstr=
String text = "ref=\"ar\" alias=\"as sa\" value=\"asa\"";
在第一次匹配中,将获取两个参数,在第二次匹配中,将获取引号中的数据
当前结果:
“ar”
“作为sa”value=“asa”
所需结果:
“ar”
“作为sa”尝试
String patternstr=“(别名=\”[\\w\\s]*\”)(参考=\“[[\\w]]*\”)”代码>也匹配最后一个,但使用?>修饰符修改要从结果中排除的组
有关更多信息,请参见此:
你只需要让你的对手更懒一点。我相信
String patternstr="(alias=\".*\")|(ref=\"[[\\w]]*\")";
String patternstr2Level="\".*\"";
我们应该做到这一点。通过使用*?
而不仅仅是*
,匹配的这一部分将变为惰性。换句话说,它将尝试匹配找到的第一个双引号,而不是匹配尽可能多的内容,直到找到最后一个双引号。我用Python对它进行了测试,效果很好。您的问题已经得到了回答,但似乎您的问题可以用Python更好地解决。没问题。如果这个答案对您来说足够好,那么继续并单击问题左侧的复选标记,以便将此问题标记为已回答。
String patternstr="(alias=\".*?\")|(ref=\".*?\")";