字符边界
- 匹配的不是字符而是位置,即符合条件的位置 而不是字符
^
在字符串的开始的位置匹配 在方括号是取反的哟$
在字符串的结束的位置匹配\b
匹配一个单词边界 匹配的位置是前面的字符和后面的字符不全是\w
即字与空格间的位置。\B
非单词边界匹配。
匹配模式
IGNORECASE 忽略大小写模式
- 匹配时忽略大小写
- 默认情况下,正则表达式是区分大小写的
SINGLELINE 单行模式
- 整个文本看作是一个字符串,只有一个开头和结尾
- 使小数点
"."
可以匹配包含换行符(\n
)在内的任意字符
MULTILINE 多行模式
- 每一行者是一个字符串,都是有开头和结尾
- 在指定了MULTILINE 之后,如果需要只匹配字符串开始和结束位置可以使用
\A
和\Z
选择符和分组
|
分支结构 左右两边的表达式之间"或"关系 匹配左边或右边()
捕获组- 在被匹配次数的时候,括号中的表达式可以作为整体被修饰
- 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
- 每一对括号会分配一个编号,使用
()
的捕获根据左括号的顺序从一开始自动编号。捕获元素编号为零的第一个捕获是由整个表达式模式匹配的文本
(?:Expression)
非捕获组 一些表达中,不得不使用()
,但又不想保存()中的子表达式匹配的内容 ,这时可以用非捕获组来抵消使用()
带来的副作用
反向引用 (nnn)
- 每一对()分分配一个编号 ,使用()的捕获根据左括号的顺序从1开始自动编号
- 通过反向引用,可以对分组已捕获的字符串 进行引用