java - 正则表达式: No match found

标签 java regex

我刚刚开始学习正则表达式。我试图获取“mytag”标签内的属性值并使用以下代码,但它给了我“找不到匹配项”异常。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class dummy {

    public static void testRegEx()
    {
    //  String pattern_termName = "(?i)\\[.*\\]()\\[.*\\]";

        Pattern patternTag;
        Matcher matcherTag;

        String mypattern= "\\[mytag attr1="(.*?)" attr2="(.*?)" attr3="(.*?)"](.+?)\\[/mytag]";

        String term="[mytag attr1=\"20258044753052856\" attr2=\"A security \" attr3=\"cvvc\" ]TagTitle[/mytag]";


        patternTag = Pattern.compile(mypattern);

        matcherTag = patternTag.matcher(term);

        System.out.println(matcherTag.group(1)+"*********"+matcherTag.group(2)+"$$$$$$$$$$$$");
    }

    public static void main(String args[])
    {
        testRegEx();    
    }

}

我已经使用 \" 代替 " 但它仍然显示相同的异常。

最佳答案

您忘记根据查找函数检查匹配器对象,并且还需要使用 \" 而不是 ",。 find方法扫描输入序列,寻找与模式匹配的下一个子序列。

Pattern patternTag;
Matcher matcherTag;
String mypattern= "\\[mytag attr1=\"(.*?)\" attr2=\"(.*?)\" attr3=\"(.*?)\"\\s*](.+?)\\[/mytag]";
String term="[mytag attr1=\"20258044753052856\" attr2=\"A security \" attr3=\"cvvc\" ]TagTitle[/mytag]";
patternTag = Pattern.compile(mypattern);
matcherTag = patternTag.matcher(term);
while(matcherTag.find()){
       System.out.println(matcherTag.group(1)+"*********"+matcherTag.group(2)+"$$$$$$$$$$$$");
}

输出:

20258044753052856*********A security $$$$$$$$$$$$

DEMO

关于java - 正则表达式: No match found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26377954/

相关文章:

java - 如何使用 Jackson 迭代 JSON 对象?

java - WooCommerce REST API 与 Android 电子商务应用程序

php - 具有双重否定匹配的正则表达式

regex - 在 emacs-lisp 中,如何正确使用 replace-regexp-in-string?

c# - #eval GridView 中的电话号码

java - 从另一个线程 javafx 更新 ImageView

java - Mysql 没有重新连接 JNDI Tomcat 6

java - 如何将相同的更改应用于两个项目

regex - 使用 MATLAB 正则表达式匹配重叠模式与捕获

python - 根据具有特殊条件的单词之间的逗号拆分字符串 - Python