切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
正则表达式
关于正则表达式1
关于正则表达式1
2020-06-17
正则表达式
前端之家
前端之家
收集整理的这篇文章主要介绍了
关于正则表达式1
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的
代码
。很可能你使用过Windows/Dos下用于
文件
查找的
通配
符(wildcard),也就是*和?。如果你想查找某个目录下的所有的Word文档的话,你会
搜索
*.doc。在这里,*会被解释成任意的字符串。和
通配
符类似,正则表达式也是用来进行文本匹配的工具,只不过比起
通配
符,它能更精确地描述你的需求——当然,代价就是更复杂. \b是正则表达式规定的一个特殊
代码
(好吧,某些人叫它元字符,
Meta
character),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,@R_
502
_375@或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。 假如你要找的是hi后面不远处跟着一个Lucy,你应该用\bhi\b.*\bLucy\b 这里,.是另一个元字符,匹配除了换行符以外的任意字符。*同样是元字符,不过它代表的不是字符,也不是位置,而是
数量
——它指定*前边的
内容
可以连续重复使用任意次以使整个表达式得到匹配。因此,.*连在一起就意味着任意
数量
的不包含换行的字符。现在\bhi\b.*\bLucy\b的意思就很明显了:先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词。 0\d\d-\d\d\d\d\d\d\d\d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字(也就是中国的电话号码。当然,这个例子只能匹配区号为3位的情形)。 这里的\d是个新的元字符,匹配一位数字(0,或1,或2,或……)。-不是元字符,只匹配它本身——连字符(或者减号,或者中横线,或者随你怎么称呼它)。 为了避免那么多烦人的重复,我们也可以这样写这个表达式:0\d{2}-\d{8}。 这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)。 元字符 现在你已经知道几个很有用的元字符了,如\b,.,*,还有\d.正则表达式里还有更多的元字符,比如\s匹配任意的空白符,
包括
空格,制表符(Tab),换行符,
中文
全角空格等。\w匹配字母或数字或下划线或汉字等。 .匹配除换行符以外的任意字符 \w匹配字母或数字或下划线或汉字 \s匹配任意的空白符 \d匹配数字 \b匹配单词的开始或结束 ^匹配字符串的开始 $匹配字符串的结束 字符转义 果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\. 重复
代码
/语法说明 *重复零次或更多次 +重复一次或更多次 ?重复零次或一次 {n}重复n次 {n,}重复n次或更多次 {n,m}重复n到m次 下面是一些使用重复的例子: Windows\d+匹配Windows后面跟1个或更多数字 ^\w+匹配一行的第一个单词(或整个字符串的第一个单词,具体匹配哪个意思得看选项设置) 字符类 要想查找数字,字母或数字,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),应该怎么办? 很简单,你只需要在方括号里列出它们就行了,像[ae
IoU
]就匹配任何一个英文元音字母,[.?!]匹配@R_
502
_375@(.或?或!)。 我们也可以轻松地指定一个字符范围,像[0-9]代表的含意与\d就是完全一致的:一位数字;同理[a-z0-9A-Z_]也完全等同于\w(如果只考虑英文的话)。 下面是一个更复杂的表达式:\(?0\d{2}[) -]?\d{8}。 反义 有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义:
代码
/语法说明 \W匹配任意不是字母,数字,下划线,汉字的字符 \S匹配任意不是空白符的字符 \D匹配任意非数字的字符 \B匹配不是单词开头或结束的位置 [^x]匹配除了x以外的任意字符 [^ae
IoU
]匹配除了ae
IoU
这几个字母以外的任意字符 例子:\S+匹配不包含空白符的字符串。 <a[^>]+>匹配用尖括号括起来的以a开头的字符串。 后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的
内容
)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会
自动
拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。 后向引用用于重复
搜索
前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。难以理解? 请看示例: \b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go,或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的
内容
(也就是前面匹配的那个单词)(\1)。 你也可以自己指定子表达式的组名。要指定一个子表达式的组名,请使用这样的语法:(?<Word>\w+)(或者把尖括号换成'也行:(?'Word'\w+)),这样就把\w+的组名指定为Word了。要反向引用这个分组捕获的
内容
,你可以使用\k<Word>,所以上一个例子也可以写成这样:\b(?<Word>\w+)\b\s+\k<Word>\b。 使用小括号的时候,还有很多特定用途的语法。下面列出了最常用的一些: 零宽断言 接下来的四个用于查找在某些
内容
(但并不
包括
这些
内容
)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。最好还是拿例子来说明吧: (?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。 (?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。 假如你想要给一个很长的数字中每三位间加一个逗号(当然是从右边加起了),你可以这样查找需要在前面和里面
添加
逗号的部分:((?<=\d)\d{3})+\b,用它对1234567890进行查找时结果是234567890。 下面这个例子同时使用了这两种断言:(?<=\s)\d+(?=\s)匹配以空白符间隔的数字(再次强调,不
包括
这些空白符) 上边已经描述了构造正则表达式的大量元素,但是还有很多没有提到的东西。下面是一些未提到的元素的列表,包含语法和简单的说明。你可以在网上找到更详细的参考资料来学习它们--当你需要用到它们的时候。如果你安装了MSDN Library,你也可以在里面找到.net下正则表达式详细的文档。
代码
/语法说明 \a报警字符(打印它的
效果
是电脑嘀一声) \b通常是单词分界位置,但如果在字符类里使用代表退格 \t制表符,Tab \r回车 \v竖向制表符 \f换页符 \n换行符 \eEscape \0nnASCII
代码
中八进制
代码
为nn的字符 \xnnASCII
代码
中十六进制
代码
为nn的字符 \unnnnUnicode
代码
中十六进制
代码
为nnnn的字符 \cNASCII控制字符。比如\cC代表Ctrl+C \A字符串开头(类似^,但不受处理多行选项的影响) \Z字符串结尾或行尾(不受处理多行选项的影响) \z字符串结尾(类似$,但不受处理多行选项的影响) \G当前
搜索
的开头 \p{name}Unicode中命名为name的字符类,例如\p{IsGreek} (?>exp)贪婪子表达式 (?<x>-<y>exp)平衡组 (?im-nsx:exp)在子表达式exp中改变处理选项 (?im-nsx)为表达式后面的部分改变处理选项 (?(exp)yes|no)把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no (?(exp)yes)同上,只是使用空表达式作为no (?(name)yes|no)如果命名为name的组捕获到了
内容
,使用yes作为表达式;否则使用no (?(name)yes)同上,只是使用空表达式作为no
原文链接:/regex/362663.html
上一篇:正则学习,示例
下一篇:正则匹配这样两个字符串a'bc
猜你在找的正则表达式相关文章
常用正则表达式-手机号、身份证、邮箱
一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4...
作者:前端之家 时间:2021-01-10
JS正则表达式详解
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一...
作者:前端之家 时间:2020-12-29
组内正则培训记录
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都...
作者:前端之家 时间:2020-12-20
高级正则表达式技术(Python版)
正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的...
作者:前端之家 时间:2020-07-22
史上最全最常用的正则表达式
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,...
作者:前端之家 时间:2020-07-22
正则表达式工具
作者:前端之家 时间:2020-07-22
正则表达式初步
作者:前端之家 时间:2020-07-22
分享5个可视化的正则表达式编辑工具
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编...
作者:前端之家 时间:2020-07-22
分享5个可视化的正则表达式编辑工具
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器...
作者:前端之家 时间:2020-07-22
[知识积累]--正则表达式记忆表
在工作中常常遇到正则表达式问题,有时候又会忘记这则的语法。 下面就分享一份正则表达式记...
作者:前端之家 时间:2020-07-22
编程分类
算法
设计模式
多媒体技术
正则表达式
Elasticsearch
Flink
Hadoop
IDE
最新文章
• 常用正则表达式-手机号、身
• JS正则表达式详解
• 组内正则培训记录
• 高级正则表达式技术(Pyth
• 史上最全最常用的正则表达
• 正则表达式基本语法
• 正则表达式工具
• 正则表达式初步
• 分享5个可视化的正则表达式
• 分享5个可视化的正则表达式
热门标签
更多 ►
受约束
摘*
day25
Java常用类库
置信
lamda
留存
持续录入
年后
正则表达式30
3.17
regularexpre
匹
多模
适
20130322
基础理论
pathmunge
涵义
reec
tok
需要转义的特
资源分享
validationex
简明魔法
里弄
形如
源码实现
完备
actionscript