文章目录

  • 1. 正则表达式(Regular Expression)
  • 2. 正则表达式语法: + ,* ,?
  • 3. 正则表达式语法 [...]
  • 4. 非打印字符
  • 5. 特殊字符
  • 6. 限定符
  • 7. 贪婪和非贪婪
  • 8. 定位符
  • 9. 选择
  • 10. 正则表达式 修饰符
  • 11. 元字符 和 正则表达式的优先级


1. 正则表达式(Regular Expression)


正则表达式是用来提高效率的。

常用的几个字符作用:

  • ^ 为匹配输入字符串的开始位置。
  • + 匹配一个或者多个内容。例如: [0-9] 匹配单个数字,[0-9]+匹配多个数字。
  • $ 为匹配输入字符串的结束位置。abc$匹配字母 abc 并以 abc 结尾。

使用了正则表达式可以更加灵活的操作一些内容。

2. 正则表达式语法: + ,* ,?


+ 号代表前面的字符必须至少出现一次(1次或多次):

  • 例如:itholm+es ,可以匹配 itholmes,itholmmmes等等。
  • 相当于把m+看成一块内容,匹配的有m,mm,mmm等等。

* 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次):

  • 例如:itholm*es,可以匹配 itholes , itholmes,itholmmes等等。
  • 同理把m*看成一体,可以没有m,可以有一个m,可以有多个m等等。

? 问号代表前面的字符最多只可以出现一次(0次或1次):

  • 例如:itholm?es,就只能匹配itholes , itholmes。
  • 同样把m?看为一体,只能没有m,可以有一个m。

3. 正则表达式语法 […]


匹配 /[...]/g 中的所有字符:

  • 例如:[abc] , 匹配全部的a,b,c字符。

匹配除了 /[^...]/g 中字符的所有字符:

  • 例如:[^abc] , 匹配除了a,b,c字符的所有字符。

/[A-Z]/g 表示一个区间,匹配所有大写字母,/[a-z]/g 表示所有小写字母:

  • [A-Z]匹配所有的大写字符,[a-z]匹配所有的小写字符。

/./g 匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]

  • \r是回车,前者使光标到行首,(carriage return)
  • \n是换行,后者使光标下移一格,(line feed)
  • \r 是回车,return \n 是换行

/[\s]/g/[\S]/g

  • \s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。

/\w/g 匹配字母、数字、下划线。等价于 /[A-Za-z0-9_]/g

  • 适用于登录场合等等。

4. 非打印字符


像\f,\n等等非打印字符,都可以通过正则表达式来查找。

java正则表达式如何匹配冒号 正则表达式 匹配冒号_优先级

5. 特殊字符


java正则表达式如何匹配冒号 正则表达式 匹配冒号_java正则表达式如何匹配冒号_02

6. 限定符


java正则表达式如何匹配冒号 正则表达式 匹配冒号_java正则表达式如何匹配冒号_03


需要注意格式:
举个例子: /[1-9][a-z][A-Z][0-9]*[a-z]*/g 解释如下:

上面匹配的内容:

  • 第一个字符1到9
  • 第二个字符a到z
  • 第三个字符A到Z
  • 第四个0到9,但是因为有* 所以是0到9以及后面多个数字(也是0-9的)。
  • 第五个a到z,同样也是有* 所以是a到z以及后面多个字符(也是a-z的)。

总结起来就是一一对应,注意特殊字符的含义!


设置0~99的两位数的正则表达式:

  • /[0-9]{1,2}/ 匹配[0-9]的一位数或者两位数。
  • 这种匹配方式的缺点是:只能匹配两位数字,而且可以匹配 0、00、01、10 99 的章节编号仍只匹配开头两位数字。

改进:

  • /[1-9][0-9]?/ 或者 /[1-9][0-9]{0,1}/, 这样就可以避免上面的内容了。

7. 贪婪和非贪婪


* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。

java正则表达式如何匹配冒号 正则表达式 匹配冒号_bc_04

8. 定位符


java正则表达式如何匹配冒号 正则表达式 匹配冒号_正则表达式_05

9. 选择


用圆括号 () 将所有选择项括起来,相邻的选择项之间用 | 分隔。

() 表示捕获分组,() 会把每个分组里的匹配的值保存起来。

之后就是?=、?<=、?!、?<! 的使用。

https://www.runoob.com/regexp/regexp-syntax.html

10. 正则表达式 修饰符


java正则表达式如何匹配冒号 正则表达式 匹配冒号_bc_06

11. 元字符 和 正则表达式的优先级


*元字符就是上面说到的一系列的字符,\ ,^ $,等等。

优先级越是在外面包裹的字符优先级越高。

java正则表达式如何匹配冒号 正则表达式 匹配冒号_bc_07