谁能帮忙看一下这个正则表达式匹的是什么:regex = "\".+\"";
思索良久,仍一筹莫展的,望大虾指教,谢谢~~

解决方案 »

  1.   

    .是匹配除了换行符之外的任意字符的,+表示重复1次或者多次。
    public class RegexTest {
    public static void main(String args[]){
    String regex = "\".+\"";
    String str1 = "\"sajdlksajdladsadsadsadsa\"";
    String str2 = "\"sajdlksajdla\ndsadsadsadsa\"";

    System.out.println(str1.matches(regex));
    System.out.println(str2.matches(regex));
    }
    }
      

  2.   

    这个表达式有问题的!.+ 属于贪婪式匹配,以匹配尽可能多的为己任。做个测试就知道了:import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test5 {
        
        private final static Scanner console = new Scanner(System.in);    public static void main(String[] args) {
            
            String regex = "\".+\"";
            String str = "abc\"123\"def\"456\"ghi\"789\"jklmnopqrstuvwxyz";
            
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                System.out.println(matcher.group());
            }
        }
    }把表达式改成懒惰式匹配 .+? 就会变成另外一种情况:import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test5 {
        
        private final static Scanner console = new Scanner(System.in);    public static void main(String[] args) {
            
            String regex = "\".+?\"";
            String str = "abc\"123\"def\"456\"ghi\"789\"jklmnopqrstuvwxyz";
            
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                System.out.println(matcher.group());
            }
        }
    }当然了,也可以改成 String regex = \"[^\"]+\";