暂时先写到这里,随使用逐步更新此文,希望我的总结能帮到你
Regular Expression Syntax
' . '
在默认模式下,匹配除换行符以外的任意字符。如果指定 DOTALL
标志,将匹配任何字符,包括换行符。
' ^ '
匹配字符串的起始,并且在MULTILINE
模式下 也匹配多行的起始位置。
' $ '
匹配字符串的末尾,或者新的一行前字符的末尾。在 MULTLINE 模式下将匹配多行的末尾位置。'foo'
匹配 'foo'
和 'foobar'
,然而正则表达式'foo$'
仅匹配' foo'
。更有趣的是,search for 'foo.$'
在'foo1\nfoo2\n'
自然匹配’foo2’,在MULTILINE
模式下'foo1'
会被匹配;在'foo\b'
中寻找单一’$’将会返回两个 空(empty)匹配:一个在新的一行之前,一个在字符串的结尾。
' * '
使该符号前面的正则表达式匹配0次或多次,尽可能更多的匹配。’ab*’ 将会匹配 ‘a’,’ab’或者’a’跟随着任意数量的’b’
' + '
使得该符号前面的正则表达式匹配1次或多次,'ab+'
将会匹配 ‘a’跟随着任意非零数量的’b’,不会仅仅匹配一个’a’
' ? '
使得该符号前面的正则表达式匹配1次或0次,'ab?'
将会匹配 ‘a’或’ab’
*?, +? , ??
符号* ‘,’ + ‘,’ ? ‘是贪婪匹配,他们尽可能更多的匹配字符。有时我们不需要这样的性质,如果 RE <.**>匹配 <a> b <c>
,它将会匹配整个字符串,而不是<a>
。在这几个符号后面加上?使他进行非贪婪模式匹配或者最小匹配,尽可能少的字符将会被匹配。使用RE <.*?>
将会仅仅匹配<a>
{m}
前面的正则表达式重复m次形成的表达式将会被匹配,少于正则次数的将不会被匹配,例如a{6}
将会仅匹配 6 个 ‘a’字符,而不是5个’a’
{m,n}
符合前面正则表达式重复m到n次形成的表达式将会被匹配,尽可能的匹配更多的前面的正则。这个表达式还有非贪婪的版本。例如