Greedy 数量词,以X+为例来实例分析,同时展示我的疑惑

来源:互联网 发布:犀牛软件模型立面 编辑:程序博客网 时间:2024/06/05 15:37

Greedy翻译为:贪婪,贪心,侧面描述了正则表达式的特点;
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
例如:X+ X,一次或多次

Demo1:
String str1 = “兄.弟弟…们们们们们…Just….do…it..”;
String regex1 = “兄+”;
System.out.println(str1.replaceAll(regex1, “1”));
regex1 = “弟+”;
System.out.println(str1.replaceAll(regex1, “1”));

输出:
1.弟弟…们们们们们…Just….do…it..
兄.1…们们们们们…Just….do…it..
说明,“X+”代表X出现1次或1次以上;


Demo2:
regex1 = “(兄)\\1+”;
System.out.println(str1.replaceAll(regex1, “1”));
regex1 = “(弟)\\1+”;
System.out.println(str1.replaceAll(regex1, “1”));

输出:
兄.弟弟…们们们们们…Just….do…it..
兄.1…们们们们们…Just….do…it..
说明,在组的概念中,”(X)\\1+”代表X出现两次或两次以上


Demo3:
regex1 = “(.)\\1+(\\.)\\2+”;
System.out.println(str1.replaceAll(regex1, “1”));

输出:
兄.11Just1do…it..
说明,在组的概念中,出现的第一个括号所包括的内容,编号为1,第二个为2,类推。弟弟…–>1;们们们们们…—>1;….—>1;即替换后有三处符合正则,被替换。

0 0
原创粉丝点击