转自 http://deerchao.net/tutorials/regex/regex.htm#intr oduction 开始--运行--gpedit.msc--"本地计算机"策略--用户配置--Windows设置--脚本(登陆/注销)--右测点登陆,
然后填入脚本路径。
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述
这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
元字符
1. \b单词的开头或结尾,也就是单词的分界处。
2. .匹配除了换行符以外的任意字符。
3. *它代表的不是字符,也不是位置,而是数量--它指定*前边的内容可以连续重复使用任意次以使整个表达
式得到匹配。
.*连在一起就意味着任意数量的不包含换行的字符。 \n 换行符
4. \d匹配一位数字。 d\+匹配一位以上数字,d\*匹配0位或多位。
5. \s匹配任意的空白符。包括空格,制表符(Tab),换行符,中文全角空格等。
6. \w匹配字母、数字、下划线、汉字等。
7. ^字符串的开始
8. $字符串的结束
反义
1. \B匹配不是以单词开头或结束的位置
2. \D任意非数字的字符
3. \S任意不是空白符的字符
4. \W匹配任意不是字母、数字、下划线、汉字的字符
5. [^x]匹配除x以外的任意字符
元字符转义
\ www.sohu.com 写成 www\.sohu\.com
分组
() 小括号来指定子表达式(也叫做分组)
重复
1. *重复0次或多次
2. +重复1次或多次
3. ?重复0次或1次
4. {n}重复n次
5. {n,}重复n次或更多次
6. {n,m}重复n次到m次
分支条件
| 用|把不同的规则分隔开。
后向引用
\1代表分组1匹配的文本。\b(\w+)\b\s+\1\b可以用来匹配重复的单词。与这个同:\b(?\w+)
\b\s+\k\b
捕获
(exp) 匹配exp,并捕获文本到自动命名的组里
(?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言 (?=exp) 匹配exp前面的位置
(?正则表达式的处理产生任何影响,用于提供注释让人阅读
懒惰限定符
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
举例
1.\bsearchword\b
2. 0\d\d-\d\d\d\d\d\d\d\d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号"-",最后是8
个数字,也就是中国的电话号码。
0\d{2}-\d{8}, 这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)。
3. ^\d{5,12}$,5位到12位数字。
4. win\d+ win后面跟一个或多个数字
5. ^\w+ 匹配一行的第一个单词
6. [aeiou]匹配任何一个英文元音字母;[^aeiou] 匹配除了aeiou这几个字母以外的任意字符。
6. [.?!]匹配标点符号(.或?或!)
7. [0-9]代表的含意与\d就是完全一致的:一位数字
8. [a-z0-9A-Z_]也完全等同于\w(如果只考虑英文的话)
9. \(?0\d{2}[) -]?\d{8}。
"("和")"也是元字符。
这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进
行一些分析吧:首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是
)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。
但是也能匹配010)12345678或(022-87654321这样的"不正确"的格式。
10. 0\d{2}-\d{8}|0\d{3}-\d{7}
能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本
地号(0376-2233445)。
11.\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}
这个表达式匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字
号或空格间隔,也可以没有间隔。
12.\d{5}-\d{4}|\d{5}
这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。之所以要给出
这个例子是因为它能说明一个问题:使用分枝条件时,要注意各个条件的顺序。
如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条
件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。
12. IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0 -5]|[01]?\d\d?)。
最大为255
13. \S+匹配不包含空白符的字符串。
14. ]+>匹配用尖括号括起来的以a开头的字符串。是,不是。a[^>]意思是a之后不能马上跟着>。
然后填入脚本路径。
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述
这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
元字符
1. \b单词的开头或结尾,也就是单词的分界处。
2. .匹配除了换行符以外的任意字符。
3. *它代表的不是字符,也不是位置,而是数量--它指定*前边的内容可以连续重复使用任意次以使整个表达
式得到匹配。
.*连在一起就意味着任意数量的不包含换行的字符。 \n 换行符
4. \d匹配一位数字。 d\+匹配一位以上数字,d\*匹配0位或多位。
5. \s匹配任意的空白符。包括空格,制表符(Tab),换行符,中文全角空格等。
6. \w匹配字母、数字、下划线、汉字等。
7. ^字符串的开始
8. $字符串的结束
反义
1. \B匹配不是以单词开头或结束的位置
2. \D任意非数字的字符
3. \S任意不是空白符的字符
4. \W匹配任意不是字母、数字、下划线、汉字的字符
5. [^x]匹配除x以外的任意字符
元字符转义
\ www.sohu.com 写成 www\.sohu\.com
分组
() 小括号来指定子表达式(也叫做分组)
重复
1. *重复0次或多次
2. +重复1次或多次
3. ?重复0次或1次
4. {n}重复n次
5. {n,}重复n次或更多次
6. {n,m}重复n次到m次
分支条件
| 用|把不同的规则分隔开。
后向引用
\1代表分组1匹配的文本。\b(\w+)\b\s+\1\b可以用来匹配重复的单词。与这个同:\b(?\w+)
\b\s+\k\b
捕获
(exp) 匹配exp,并捕获文本到自动命名的组里
(?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言 (?=exp) 匹配exp前面的位置
(?正则表达式的处理产生任何影响,用于提供注释让人阅读
懒惰限定符
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
举例
1.\bsearchword\b
2. 0\d\d-\d\d\d\d\d\d\d\d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号"-",最后是8
个数字,也就是中国的电话号码。
0\d{2}-\d{8}, 这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)。
3. ^\d{5,12}$,5位到12位数字。
4. win\d+ win后面跟一个或多个数字
5. ^\w+ 匹配一行的第一个单词
6. [aeiou]匹配任何一个英文元音字母;[^aeiou] 匹配除了aeiou这几个字母以外的任意字符。
6. [.?!]匹配标点符号(.或?或!)
7. [0-9]代表的含意与\d就是完全一致的:一位数字
8. [a-z0-9A-Z_]也完全等同于\w(如果只考虑英文的话)
9. \(?0\d{2}[) -]?\d{8}。
"("和")"也是元字符。
这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进
行一些分析吧:首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是
)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。
但是也能匹配010)12345678或(022-87654321这样的"不正确"的格式。
10. 0\d{2}-\d{8}|0\d{3}-\d{7}
能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本
地号(0376-2233445)。
11.\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}
这个表达式匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字
号或空格间隔,也可以没有间隔。
12.\d{5}-\d{4}|\d{5}
这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。之所以要给出
这个例子是因为它能说明一个问题:使用分枝条件时,要注意各个条件的顺序。
如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条
件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。
12. IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0 -5]|[01]?\d\d?)。
最大为255
13. \S+匹配不包含空白符的字符串。
14. ]+>匹配用尖括号括起来的以a开头的字符串。是,不是。a[^>]意思是a之后不能马上跟着>。