您的位置:首页 > 其它

正则表达式 学习笔记(三)

2016-06-24 21:30 183 查看

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. (在匹配表达式和替换表达式中都可用)

元字符:
.
\
[
]
{
}
?
*
+
|
(
)
^
$


在字符类中使用元字符:
[
]
\
-
^


使用反斜杠可以忽略元字符:
\
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: