为了账号安全,请及时绑定邮箱和手机立即绑定

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

^和\A的区别

$和\Z的区别




正在回答

2 回答

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.


0 回复 有任何疑惑可以回复我~
#1

cc在哪 提问者

不错的例子
2016-11-01 回复 有任何疑惑可以回复我~


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

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



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

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



1 回复 有任何疑惑可以回复我~
#1

cc在哪 提问者

就是说^和$能匹配多行,\A和\Z不行吗
2016-10-28 回复 有任何疑惑可以回复我~
#2

慕粉3863858

能就个例子吗?我在字符串中加\n效果也是一样的
2016-10-30 回复 有任何疑惑可以回复我~
#3

慕粉3936973 回复 cc在哪 提问者

\A和\Z设置或者不设置多行匹配,效果是一样的。参照我下面的最后两个例子。
2016-10-31 回复 有任何疑惑可以回复我~
#4

慕粉3936973 回复 慕粉3863858

请参照下面示例。
2016-10-31 回复 有任何疑惑可以回复我~
#5

慕粉3936973 回复 慕粉3863858

请参照下面示例。
2016-10-31 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消
python正则表达式
  • 参与学习       80575    人
  • 解答问题       174    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信