如何在java中使用模式查找字符串

Raj*_*eev 0 java

请参考以下代码

    String line = "abc_dfgb_tf";

    String pattern1 = "(\\w+)([+-])(\\d+)(\\w+)";
    Pattern r1 = Pattern.compile(pattern1);
    Matcher m1 = r1.matcher(line);

    if (m1.find( )) 
    {
       System.out.println("Found value: " + m1.group(1) );
       System.out.println("Found value: " + m1.group(2) );
       System.out.println("Found value: " + m1.group(3) );
       System.out.println("Found value: " + m1.group(4) );
    }
Run Code Online (Sandbox Code Playgroud)

如果是"abc_dfgb_tf",则字符串m1.find()将变为false.

请建议用于两种类型的字符串"abc_dfgb_tf"和"abc_dfgb_tf + 1cbv"的模式

救命

Joh*_*ger 5

你似乎想要这样的东西:

String pattern1 = "(\\w+)(?:([+-])(\\d+)(\\w+))?";
Run Code Online (Sandbox Code Playgroud)

这使得可选尾部实际上是可选的.