正则表达式(一)——基本知识
来源:互联网 发布:大数据分析用户行为 编辑:程序博客网 时间:2024/06/07 20:41
元字符
表1.常用的元字符
代码
说明
.
匹配除换行符以外的任意字符
\w
匹配字母或数字或下划线或汉字
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
字符转义
想查找元字符本身。使用\.和\*。当然,要查找\本身,你也得用\\.
匹配次数
表2.常用的限定符
代码/语法
说明
*
重复零次或更多次
+
重复一次或更多次
?
重复零次或一次
{n}
重复n次
{n,}
重复n次或更多次
{n,m}
重复n到m次
句点符号
句点符号匹配所有字符,包括空格、Tab字符
如:要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。可使用句点符号“.”。这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。
方括号符号
只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“ten”、“tin”和“ton”。但“toon”不匹配,因为在方括号之内你只能匹配单个字符:
或条件
如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n
0\d{2}-\d{8}|0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。
分组
想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了。
(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。
否条件
表3.常用的反义代码
代码/语法
说明
\W
匹配任意不是字母,数字,下划线,汉字的字符
\S
匹配任意不是空白符的字符
\D
匹配任意非数字的字符
\B
匹配不是单词开头或结束的位置
[^x]
匹配除了x以外的任意字符
[^aeiou]
匹配除了aeiou这几个字母以外的任意字符
后向引用
用于重复搜索前面某个分组匹配的文本。
例如,\1代表分组1匹配的文本\b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容(也就是前面匹配的那个单词)(\1)。
表4.常用分组语法
分类
代码/语法
说明
捕获
(exp)
匹配exp,并捕获文本到自动命名的组里
(?<name>exp)
匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp)
匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言
(?=exp)
匹配exp前面的位置
(?<=exp)
匹配exp后面的位置
(?!exp)
匹配后面跟的不是exp的位置
(?<!exp)
匹配前面不是exp的位置
注释
(?#comment)
这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
零宽断言
(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。
负向零宽断言
确保某个字符没有出现
注释
小括号的另一种用途是通过语法(?#comment)来包含注释
贪婪和懒惰
匹配尽可能多的:贪婪
匹配尽可能少的:懒惰
处理选项
改变处理正则表达式的方式
表6.常用的处理选项
名称
说明
IgnoreCase(忽略大小写)
匹配时不区分大小写。
Multiline(多行模式)
更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)
Singleline(单行模式)
更改.的含义,使它与每一个字符匹配(包括换行符\n)。
IgnorePatternWhitespace(忽略空白)
忽略表达式中的非转义空白并启用由#标记的注释。
ExplicitCapture(显式捕获)
- 正则表达式(一)——基本知识
- 正则表达式基本知识
- php 正则表达式 基本知识
- 正则表达式基本知识
- 正则表达式的基本知识
- 正则表达式的基本知识
- 正则表达式基本知识
- 正则表达式的基本知识
- 正则表达式基本知识
- 正则表达式——(一)
- 正则表达式的一些基本知识
- javascript正则表达式的基本知识
- javascript正则表达式的基本知识
- javascript正则表达式的基本知识
- javascript正则表达式的基本知识
- javascript正则表达式的基本知识
- grep与正则表达式基本知识
- javascript正则表达式的基本知识
- 一步步DIY: OSM-Web服务器(一) PostgreSql 配置以及osm2pgsql原始PBF数据导入
- bsearch(二元搜索)
- cd 函数
- commons-fileupload.jar实现文件上传
- 轻量级框架和重量级框架
- 正则表达式(一)——基本知识
- 关于org.hibernate.InvalidMappingException
- ceil 函数
- javascript基础篇 1
- nested loops/hash join
- oracle ORA-00906:缺失左大括号
- 知耻而后勇
- pl/sql条件和顺序控制
- clc 函数