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

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

1. 元字符 []  ('和')  : 定义一个字符集合;字符集合在不需要区分字母大小写(或者只需匹配某个特定部分)的搜索操作里比较常见。

2. 连字符 -  ('特殊的元字符')  :[0-9] 与 [0123456789] 完全等价;[A-Z]匹配从A到Z之间的所有大写字母;[a-z]匹配从a到z之间的所有小写字母;只能用在 [] 之间,在字符集合以外的地方,只是一个普通字符,不需要被转义。

3.元字符 ^ :对一个字符集合进行取非匹配;将作用于给定字符集合里的所有字符或字符区间。

4.转义字符 \('特殊字符的转义') :因为元字符在正则表达式中具有特殊含义,例如元字符 . 用来匹配任何一个单个字符,但无法单独匹配 . ,所以用\.来单独匹配它。注意,元字符未加转义符时,要遵循元字符语法,例如[]要成对出现,除非 \[ 或 \] 可以单独出现。如图。

 

5.元字符 + :匹配同一个字符或字符集合的多次重复(至少出现一次)。

注意,一般来说,当在字符集合里使用的时候,像 . 和 + 这样的元字符将被解释为普通字符,不需要被转义,但转义了也没有坏处。[\w.] 和 [\w\.] 的使用效果是一样的。

6.元字符 * :  匹配同一个字符或字符集合的多次重复(可以没有出现)。

 (5,6举例)邮箱格式正则表达式是:\w+[\w.]+@\w+[\w.]*\.\w+

7.元字符 ? : 只能匹配一个字符或字符集合的零次或一次出现,最多不超过一次。

举例,匹配URL地址的正则表达式是:http[s]?://[\w./]+  

举例,匹配Unix或Linux和Windows系统的空白行:[\r]?\n[\r]?\n

8.元字符 {} : 用来设定重复匹配次数;举例,匹配RGB值的正则表达式是:#[0-9A-Fa-f]{6}    

重复次数可以是0, 正则表达式 : {0,3} 表示重复次数可以是0,1,2,3

最后一种用法是给出一个最小重复次数,举例,{3,} 表示至少重复3次或更多次。

9.防止过度匹配,元字符分为贪婪型和懒惰型,贪婪型会尽可能从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配碰到的第一个匹配为止(懒惰型)。

在实际工作中,请务必根据具体情况来选用贪婪型还是懒惰型元字符。

10.限定符 \b ('单词边界') :用来匹配一个单词的开始或结尾。\b匹配且只匹配一个位置,不匹配任何字符。用\bcat\b匹配到的字符串的长度是3个字符(c,a,t),不是5个字符。

11.回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式。

12.回溯引用中,同一个子表达式可以被引用任意多次,只要在需要用到它的地方写出它的回溯引用就行了。

13.

$content = '313-555-1234';$result = preg_replace("#(\d{3})(-)(\d{3})(-)(\d{4})#", '($1) $3-$5', $content);

14.正则表达式标记要匹配的文本的位置,前后查找(lookaround),向前查找,向后查找。

15.向前查找:指定了一个必须匹配但不在结果中返回的模式。

$content = 'https://www.baidu.com/';preg_match("#(.+)(?=:)#", $content, $subject);print_r($subject[1]);

 16.向前查找模式的长度是可变的,它们可以包含.和+之类的元字符,所以非常灵活;

      而向后查找模式只能是固定长度,这是一条几乎所有的正则表达式实现都遵守的限制。

17.对前后查找取非:

 

 18.回溯引用条件语法:(?(backre-ference)true-regex|false-regex)

转载于:https://www.cnblogs.com/apeandcat/p/9893038.html

你可能感兴趣的文章
旋转图像
查看>>
中国电信天翼U盾产品荣获第三届网络安全国家标准优秀应用案例二等奖
查看>>
php结合数据库演示商品多图片上传
查看>>
网上找到的题目
查看>>
支持全球游戏加速 飞鱼星发烧级玩家路由G7上市
查看>>
Win32环境下代码注入与API钩子的实现
查看>>
读Linux那些事儿之我是U盘笔记(七)
查看>>
详细图解SharePoint 2007部署和配置过程
查看>>
centos7 基于pxe安装系统
查看>>
节假日批量设置的C#.NET程序代码参考 荐
查看>>
Vim键盘布局
查看>>
Exchange2010管理控制台无法安装
查看>>
android用户界面-组件Widget-网络视图WebView
查看>>
KVM 存储虚拟化 - 每天5分钟玩转 OpenStack(7)
查看>>
iAMT无法连接,该怎么办?
查看>>
lintcode二叉树的锯齿形层次遍历 (双端队列)
查看>>
ADSL技术概述
查看>>
CentOS下NFS服务器配置实例
查看>>
RHEL5.4部署中央日志服务器之rsyslog+loganalyzer
查看>>
酷派7728软件安装到外置SD卡上的方法,也适用于联想s850e等
查看>>