博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式
阅读量:4222 次
发布时间:2019-05-26

本文共 1857 字,大约阅读时间需要 6 分钟。

\bhi\b.*\bLucy\b:先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词
入门

学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。下面给出了不少简单的例子,并对它们作了详细的说明。

例1:\bhi\b

\bhi\b, 精确的查找hi这个单词

\b:单词的开头或结尾,也就是单词的分界处,它只匹配一个位置

hi helllo hi

匹配2个

例2:\bhi\b.*\bLucy\b

\bhi\b.*\bLucy\b:先是一个单词hi,然后是凭单个任意字符(但不甬换行)最后是LUcy这个单词

.:除了换行符以外的其它任意字符*:前边的内容可以连续重复使用任意次以使整个表达式得到匹配
.*:任意数量的不包含换行的字符

例3:0\d\d-\d\d\d\d\d\d\d\d

0\d\d-\d\d\d\d\d\d\d\d:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字(也就是中国的电话号码。当然,这个例子只能匹配区号为3位的愽形)
\d: 个个数字(0,或1,或2,或3,或......)
可简写成:0\d{2}-\d{8}
\d后面的{2}({8})的意思是前面\d必须连接重复匹配2次(8次)

测试正则表达式

Regester测试正则表达式工具
http://deerchao.net/tools/regester/index.htm

元字符

\w:字母或数字或下划线或汉字等
\ba\w*\b:匹配以字母a开头的单词----先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)
\b\w{6}\b:匹配刚好6个字符的单词
源文本:apples 一二三四五六 123456 ______
^:匹配要用来查找的字符串的开头
$:匹配结尾
^\d{5,12}$:匹配5位到12位数字,{5,12}重复的次数不能少于5次,不能多于12次
匹配源文本123456

字符转义

\
www\.baidu\.com匹配www.baidu.com
c:\\windows匹配c:\windows

 重复

常用的限定符
代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
Windows\d+:匹配Windows后面跟1个或更多数字,源文本:Windows1122
^\w+:匹配一行的第一个单词(或整个字符串的第一个单词,具体匹配哪个意思得看选项设置)

字符类

[aeiou]:匹配任何一个英文元音字母
[.?!]:匹配标点符号(.或?或!)
\(?0\d{2}[)-]?\d{8}:匹配几种格式的电话号码,像(010)88886666、022-22334455、02912345678、010 12345678、010)12345678、(010-12345678
分析:首先是一个转义字符
\(,它能出现0次或1次(
?),然后是一个0,后面跟着2个数字(
\d{2}),然后
是一个
)
-
空格,最后是8个数字(
\d{8}

分枝条件

 上个例子中:010)12345678、(010-12345678,都为“不正确的格式"
0\d{2}-\d{8}|0\d{3}-\d{7}:
匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0351-1234567)
\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}|0\d{3}[- ]?\d{7}|\(0\d{3}\)[- ]?\d{7}
匹配以下电话号码格式:
(010)88888888
(010)-12345678
01012345678
03594085020
0359-4085020
(0359)-4085020
\d{5}-\d{4}|\d{5}
这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题:
使用分枝条件时,要注意各个条件的顺序
。如果你把它改成
\d{5}|\d{5}-\d{4}
的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了

转载地址:http://xqrmi.baihongyu.com/

你可能感兴趣的文章
cocos2dx2.X 编译时,传递编译选项
查看>>
ccCArray.cpp 文件
查看>>
cocos2dx 屏幕大小
查看>>
libgdx: 2D Particle Editor工具使用
查看>>
eclipse 给jar库添加源码
查看>>
C++ 枚举声明 enum 和 enum class
查看>>
Python optionParser模块的使用方法
查看>>
android 消灭星星出错
查看>>
PyCharm 教程(三)Hello world!
查看>>
PyCharm: 显示源码行号
查看>>
cocos2dx使用第三方字库.ttf,需要注意的事项
查看>>
cocos2.X版本lua端使用定时器的方法
查看>>
lua math.fmod使用注意小数问题
查看>>
lua 时间转化
查看>>
lua学习笔记之五(Lua中的数学库)
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第一篇:互联网时代U盘化生存方式 【张振华.Jack】
查看>>
CentOS6.4配置Hadoop-2.6.0集群配置安装指南(经过实战演练)【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第二篇:专注的力量 [张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第三篇:我的舍与得的2014[张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第五篇:不要给自己找任何借口【张振华.Jack】
查看>>