正则表达式^和\A的区别 $和\Z的区别

来源:3-3 python正则表达式语法(三)

cc在哪

2016-10-24 12:54

^和\A的区别

$和\Z的区别




写回答 关注

2回答

  • 慕粉3936973
    2016-10-31 10:30:06
    已采纳
    public static void main(String[] args) { 
            String matcherStr = "This is the first Java";
            matcherStr += "\nAnd";
            matcherStr += "\nThis is the second Python";
            Matcher matcher = Pattern.compile("Java$", Pattern.MULTILINE).matcher(matcherStr);
            
            int i=0;
            while(matcher.find()){
               i++;
            }
            System.out.println(i);
    }

    There is one match (i=1) for Java in the first line. This is mutiline, so the whole matcherStr is something like:

    This is the first Java

    And

    This is the second Python


    public static void main(String[] args) { 
            String matcherStr = "This is the first Java";
            matcherStr += "\nAnd";
            matcherStr += "\nThis is the second Java";
            Matcher matcher = Pattern.compile("Java$", Pattern.MULTILINE).matcher(matcherStr);
            
            int i=0;
            while(matcher.find()){
               i++;
            }
            System.out.println(i);
    }

    There are two matchs (i=2) for Java in the first line. This is mutiline, so the whole matcherStr is something like:

    This is the first Java

    And

    This is the second Java


    public static void main(String[] args) { 
            String matcherStr = "This is the first Java";
            matcherStr += "\nAnd";
            matcherStr += "\nThis is the second Python";
            Matcher matcher = Pattern.compile("Java$").matcher(matcherStr);
            
            int i=0;
            while(matcher.find()){
               i++;
            }
            System.out.println(i);
    }

    There is no match (i=0) for Java. This is not mutiline, so the whole matcherStr is something like:

    This is the first Java\nAnd\nThis is the second Python


    public static void main(String[] args) { 
            String matcherStr = "This is the first Java";
            matcherStr += "\nAnd";
            matcherStr += "\nThis is the second Java";
            Matcher matcher = Pattern.compile("Java\\Z", Pattern.MULTILINE).matcher(matcherStr);
            
            int i=0;
            while(matcher.find()){
               i++;
            }
            System.out.println(i);
    }

    There is one match (i=1) for Java with multiline.  The same as without multiline.

    In this case: If Pattern.compile("Java$", Pattern.MULTILINE), there are two matches.


    public static void main(String[] args) { 
            String matcherStr = "This is the first Java";
            matcherStr += "\nAnd";
            matcherStr += "\nThis is the second Java";
            Matcher matcher = Pattern.compile("Java\\Z").matcher(matcherStr);
            
            int i=0;
            while(matcher.find()){
               i++;
            }
            System.out.println(i);
    }

    There is one match (i=1) for Java without multiline.


    cc在哪

    不错的例子

    2016-11-01 20:24:19

    共 1 条回复 >

  • 慕粉3936973
    2016-10-24 15:26:21


    指定匹配必须出现在字符串的开头或行的开头。

    \A 
    指定匹配必须出现在字符串的开头(忽略 Multiline 选项)。



    指定匹配必须出现在以下位置:字符串结尾、字符串结尾的 \n 之前或行的结尾。

    \Z 
    指定匹配必须出现在字符串的结尾或字符串结尾的 \n 之前(忽略 Multiline 选项)。 



    慕粉3936... 回复慕粉3863...

    请参照下面示例。

    2016-10-31 10:43:16

    共 5 条回复 >

python正则表达式

如何使用正则处理文本,带你对python正则有个全面了解

80575 学习 · 174 问题

查看课程

相似问题