什么是正则表达?正则表达是计算机科学的一个概念。它的英文名为:Regular Expression。
它是对字符串操作的一种逻辑,主要是用来验证、搜索、替换的。
正则表达式可以在JavaScript和C#中使用。
一、 JavaScript:
在JavaScript中有三个标志:
g:表示全局(global)模式,匹配所有的字符串;
i:表示忽略大小写(ignore),就是忽略字符串的大小写,这个也是用的最多的一种模式;
m:表示多行(multiple)模式,就是匹配多行文本项,如果你的文本有多行的,那么在一行文本结束了它还会继续匹配下一行。
二、 C#:
C#正则表达式使用的类为 System.Text.RegularExpressions.Regex,常用的方法有四种。
1、 测试:Regex.IsMatch(“被测试字符串”, “正则表达式”, “正则表达式选项/模式”);
2、 匹配第一条结果:Regex.Match(“被匹配字符串”, “正则表达式”, “正则表达式选项/模式”);
3、 匹配所有结果: Regex.matchs(“被匹配字符串”, “正则表达式”, “正则表达式选项/模式”);
4、 替换:Regex.matchs(“被匹配字符串”, “正则表达式”, “替换字符”, “正则表达式选项/模式”);
正则还可以匹配纯文本:
在【RegexBuddy.4.5.0.Retail】这个软件中,可以测试你想要测试的匹配一下的正则表达式,在这里匹配完之后就可以把它复制粘贴到你的项目代码里面,但是有时候要用一下转义符号\。
如图我们可以看到,那个Match那个按钮可以匹配一下文本,上面那个大的框是写正则表达式的框,而下面那个大的框则是放你想要匹配的字段,匹配之后在放字段的框上面有个Hightlight这个按钮,点击一下就可以显示你想要的那段字段了。还有个Replace的按钮,他是替换的意思,如果遇到想要替换的字段,可以点击那个按钮,启用替换模式,然后配出你想要的字段,再在写有Replace字样的那个按钮那里选第一个模式,然后就帮你配好了。
单个匹配
. | 匹配除换行符以外的任意字符; |
---|---|
\w | 匹配字母或数字、下划线。等价于’[A¬Za¬z0¬9_]’; |
– | – |
\s | 匹配任意的空白符,包括空格、制表符、换页符等等。等价于 [\f\n\r\t\v]; |
– | – |
\d | 匹配数字,等价于[0¬9]; |
– | – |
\b | 匹配单词的开始或结束; |
x¦y | 匹配 x 或 y; |
– | – |
[xyz] | 字符集合,匹配所包含的任意一个字符; |
[a¬z] | 字符范围。匹配指定范围内的任意字符; |
– | – |
而它们的斜杠大写字母就是它们的反义字符。
重复
* | 重复零次或更多次,等价于{0,}; |
---|---|
+ | 重复一次或更多次,等价于{1,}; |
? | 重复零次或一次,等价于 {0,1}; |
– | – |
{n} | 重复n次; |
{n,} | 重复n次或更多次; |
– | – |
{n,m} | 重复n到m次; |
贪婪与懒惰
正则表达式默认是贪婪型的,通常的行为是匹配尽可能多的字符,而如果想要尽可能少匹配的话,就在它的后面加上一个?号。
*? | 重复任意次,但尽可能少重复 |
---|---|
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
– | – |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
– | – |
位置指定和负向位置指定
(?=exp) | 匹配exp前面的位置 |
---|---|
(?<=exp) | 匹配exp后面的位置 |
(?!exp) | 匹配后面跟的不是exp的位置 |
– | – |
(?<!exp) | 匹配前面不是exp的位置 |
(?=exp):零宽先行断言,它匹配文本中的某些位置,这些位置的后面能匹配给定的后缀exp。
(?<=exp):零宽后行断言,它匹配文本中的某些位置,这些位置的前面能给定的前缀匹配exp。
(?!exp):零宽负向先行断言,只会匹配后缀exp不存在的位置。
(?<!exp):零宽负向后行断言来查找前缀exp不存在的位置
上面那些字符跟解释都来自正则表达式基础的资料。
还有一些正则表达可以组合起来用:\W\w:匹配所有字符;
\r\n:组合使用,换行