正则表达式 学习笔记
Posted 咖啡漩涡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式 学习笔记相关的知识,希望对你有一定的参考价值。
11.分组
你可以使用括号表示分组:
- 通过使用 Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day 匹配一周中的某一天
- (\\w*)ility 与 \\w*ility 相同。都是匹配一个由”ility”结尾的单词。稍后我们会讲解,为何第一种方法更加有用。
- 表示匹配一对括号。
- [()]表示匹配任意一个左括号或者一个右括号
- (red|blue)表示匹配red或者blue或者是一个空字符串
- abc()def与abcdef相同
- (red|blue)?与(red|blue|)相同
- \\w+(\\s+\\w+)表示匹配一个或多个由空格分隔的单词
示例
\\w+\\W+\\w+\\W+\\w+ = \\w+(\\W+\\w+){2}
\\w+\\W+\\w+\\W+\\w+\\W+\\w+\\W+\\w+\\W+\\w+ =
\\w+(\\W+\\w+){5}
12.单词分隔符
- \\b表示匹配一个单词分隔符
- \\b\\w\\w\\w\\b表示匹配一个三字母单词
- a\\ba表示匹配两个a中间有一个单词分隔符。这个正则表达式永远不会有匹配的字符,无论输入怎样的文本示例
13.换行符
一篇文本中可以有一行或多行,行与行之间由换行符分隔,比如
LINE一行文字
LINE BREAK 换行符
LINE一行文字
LINE BREAK 换行符
...
LINE一行文字
LINE BREAK 换行符
注意,所有的文本都是以一行结束的,而不是以换行符结束。但是,任意一行都可能为空,包括最后一行。行的起始位置,是在换行符和下一行首字符之间的空间。考虑到单词分隔符,文本的起始位置也可以当做是首行位置。最后一行是最后一行的尾字符和换行符之间的空间。考虑到单词分隔符,文本的结束也可以认为是行的结束。基于此概念:
- ^表示匹配行的开始位置
- $表示匹配行的结束位置
- ^&表示一个空行
^.*&
表示匹配全文内容,因为行的开始符号也是一个字符,"."会匹配这个符号。找到单独的一行,可以使用
^.*?$- \\^\\$表示匹配字符串“^$”
- [$]表示匹配一个$。但是,[^]不是合法的正则表达式。记住在方括号中,字符有不同的特殊含义。要想在方括号内匹配^,必须用[\\^]
14.文本分界
在很多的正则表达式实现中,将^和$作为文本的开始符号和结束符号。
还有一些实现中,用\\A和\\z作为文本的开始和结束符号。
15.捕获组
正则表达式(\\w*)ility表示匹配以ility结尾的词。第一个被捕获的部分是由\\w*控制的。比如,输入的文本内容中有单词accessibility,那么首先被捕获的部分是accessib。如果输入的文本中有单独的ility,则首先被捕获的是一个空字符串。
总结:
- 字符:
a
b
c
d
1
2
3
4
etc. - 字符类:
.
[abc]
[a-z]
\\d
\\w
\\s
.
代表任何字符\\d
表示
“数字”\\w
表示”字母”,[0-9A-Za-z_]
\\s
表示 “空格, 制表符,回车或换行符”- 否定字符类:
[^abc]
\\D
\\W
\\S
- 重复:
{4}
{3,16}
{1,}
?
*
+
?
表示 “零次或一次”*
表示 “大于零次”+
表示 “一次或一次以上”- 如果不加上?,所有的重复都是最长匹配的(贪婪)
- 分组:
(Septem|Octo|Novem|Decem)ber
- 词,行以及文本的分隔:
\\b
^
$
\\A
\\z
- 转义字符:
\\1
\\2
\\3
etc. (在匹配表达式和替换表达式中都可用)
- 元字符:
.
\\
[
]
{
}
?
*
+
|
(
)
^
$
- 在字符类中使用元字符:
[
]
\\
-
^
- 使用反斜杠可以忽略元字符:
\\
以上是关于正则表达式 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
javascript学习笔记-正则表达式-少写1000行代码的正则表达式