java之学习正则表达式的分组功能及案例

Posted 极速

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之学习正则表达式的分组功能及案例相关的知识,希望对你有一定的参考价值。

结果示意图

正则表达式的分组功能

正则表达式的分组功能
* 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)

组零始终代表整个表达式。
B:案例演示
a:切割
需求:请按照叠词切割: “feqqqnxggggggianssssgbe”;
b:替换
需求:我我….我…我.要…要要…要学….学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。

案例代码

  1. package com.ifenx8.regex;

  2.  

  3. public class Demo7_Regex {

  4.  

  5. /**

  6. * * A:正则表达式的分组功能

  7. * 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:

  8. *

  9. 1     ((A)(B(C)))

  10. 2     (A

  11. 3     (B(C))

  12. 4     (C)

  13. 组零始终代表整个表达式。

  14. B:案例演示

  15. a:切割

  16. 需求:请按照叠词切割: "feqqqnxggggggianssssgbe";

  17. b:替换

  18. 需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程

  19. 将字符串还原成:“我要学编程”。

  20. */

  21. public static void main(String[] args) {

  22. demo1();

  23. demo2();

  24. //叠词练习如:aabb 高高兴兴  欢欢乐乐

  25. String s = "高高兴兴";

  26. String regex = "(.)\1(.)\2";//表示第一组出现一次第二组出现一次

  27. System.out.println(s.matches(regex));

  28. //练习 abab 如 高兴高兴  学习学习

  29. String s2 = "高兴高兴";

  30. String regex2 = "(..)\1";//表示第一组有两个字符,这一组出现一次

  31. System.out.println(s2.matches(regex2));

  32. }

  33.  

  34. public static void demo2() {

  35. /*b:替换

  36. 需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程

  37. 将字符串还原成:“我要学编程”

  38. 分析:

  39. 1、首先去掉“.”,用空字符串替换“.”字符

  40. 2、去掉叠词重复的

  41. */

  42. String s = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";

  43. String regex = "\.+";//设置正则表达式,表示一个或多个“.”;这一步可以和下一步合并,如:String s2 = s.replaceAll("\.+", "");

  44. String s2 = s.replaceAll(regex, "");//用空字符串替换正则表达式

  45. System.out.println(s2);

  46. System.out.println("===========");

  47. String s3 = s2.replaceAll("(.)\1+", "$1");

  48. System.out.println(s3);

  49. }

  50. public static void demo1() {

  51. /*a:切割

  52. 需求:请按照叠词切割: "feqqqnxggggggianssssgbe";*/

  53. String s = "feqqqnxggggggianssssgbe";//通过正则的分组功能把字符串重叠的位置切割开

  54. String regex = "(.)\1+";//表示第一组出现一次到多次

  55. String[] arr = s.split(regex);//将切割后的字符串存入string数组

  56. for (int i = 0; i < arr.length; i++) {//遍历数组

  57. System.out.print(arr[i]);

  58. }

  59. System.out.println();

  60. System.out.println("===========");

  61. }

  62.  

  63. }


以上是关于java之学习正则表达式的分组功能及案例的主要内容,如果未能解决你的问题,请参考以下文章

[Study]Java 版正则表达式

正则表达式之分组

JAVA的正则表达式-学习

grep之正则表达式的理解及应用

grep之正则表达式的理解及应用

javascript 正则表达式之分组与前瞻匹配详解