正则表达式之我见—处理模式

名称 说明
IgnoreCase(忽略大小写) 匹配时不区分大小写。
Multiline(多行模式) 更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)
Singleline(单行模式) 更改.的含义,使它与每一个字符匹配(包括换行符\n)。
IgnorePatternWhitespace(忽略空白) 忽略表达式中的非转义空白并启用由#标记的注释。
ExplicitCapture(显式捕获) 仅捕获已被显式命名的组。
时间: 2025-01-09 00:06:39

正则表达式之我见—处理模式的相关文章

正则表达式默认是贪婪模式

regex的---------------------正则表达式默认是贪婪模式,优先级|不高 没有^高因为.+要尽可能多的匹配.所以会认为1111.1 1. 111.111111.都是.+匹配的结果,但是由于正则表达式中最后还有一个 : . ,所以如果要是将.+匹配了所有的字符,则最后的 . (句号)无法找到匹配,正则表达式会尽可能的找到匹配,所以会将 .(句号)尝试给正则表达式中的最后一个字符(句号)来匹配,然后把前面的所有字符都用.+:来匹配.---------------------?功能

从正则表达式的iUs说说模式修正符

本想做个简单的采集程序,发现被抓页面代码的规律后发现抓下来的内容没有放到一个数组中,而是放在一个元素中,无奈找遍资料发现在正则表达式后加上"/iUs"后竟然可以了. 网上关于iUs的说明多数都是抄袭的,没有做过多的解释,对于一个小学毕业证是买来的人来说是在是不好理解.不过幸亏Google让我找到答案. "iUs" 在这里叫"模式修正符".模式修正符其实就是几个字母,可以一次使用一个也可以一次使用多个,每一个都具有一定的意义,模式修正符是对正则表达

正则表达式中常用的模式修正符有i、g、m、s、x、e详解

正则表达式中常用的模式修正符有i.g.m.s.x.e等.它们之间可以组合搭配使用. 它们的作用如下: //修正符:i 不区分大小写的匹配; //如:"/abc/i"可以与abc或aBC或ABc等匹配; //修正符:g表示全局匹配 //修正符:m 将字符串视为多行,不管是那行都能匹配; 例://模式为:$mode="/abc/m"; //要匹配的字符串为:$str="bcefg5e\nabcdfe" //注意其中\n,换行了;abc换到了下一行;

正则表达式的全局匹配模式

首先,要明确一点,所有的正则表达式都有一个lastIndex属性,用于记录上一次匹配结束的位置.如果不是全局匹配模式,那lastIndex的值始终为0,在匹配过一次后,将会停止匹配. 正则表达式的全局匹配模式,就是在创建正则表达式的时候使用g标识符或者将global属性设置为true,在全局匹配模式下,正则表达式会对指定要查找的字符串执行多次匹配.每次匹配使用当前正则对象的lastIndex属性的值作为在目标字符串中开始查找的起始位置.如果找不到匹配的项lastIndex的值会被重新设置为0.

正则表达式中的贪婪模式与非贪婪模式详解

1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NFA引擎所支持. 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”.“{m,}”.“?”.“*”和“+”. 在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括: “{m,n}?”.“{m,}?”.“??”.“*?”和“+?”.

正则表达式的三种模式【贪婪、勉强、侵占】的分析

假定要分析的字符串是xfooxxxxxxfoo 模式.*foo (贪婪模式): 模式分为子模式p1(.*)和子模式p2(foo)两个部分. 其中p1中的量词匹配方式使用默认方式(贪婪型). 匹配开始时,吃入所有字符xfooxxxxxx去匹配子模式p1.匹配成功,但这样以来就没有了字符串去匹配子模式p2.本轮匹配失败:第二轮:减少p1部分的匹配量,吐出最后一个字符, 把字符串分割成xfooxxxxxxfo和o两个子字符串s1和s2. s1匹配p1, 但s2不匹配p2.本轮匹配失败:第三轮,再次减少

正则表达式之我见——元字符

正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符.元字符使正则表达式具有处理能力.所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式. 元字符是一个或一组代替一个或多个字符的字符.听起来有点拗口,但举一个例子也许你就明白了:元字符*用来匹配0个或多个的前一字符:而元字符 . 用来匹配一个任意的一个字符. 表1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字

不用正则表达式来查找文本模式

# 假设你希望在字符串中查找电话号码, # 你知道模式:3个数字,一个短横线,3个数字,一个短横线,再加4个数字:例如:415-555-4242 # 假定,我们用一个名为isPhoneNumer()的函数,来检查字符串是否匹配模式,它返回false或者true,如下代码演示:def isPhoneNumber(text): if len(text) != 12: return False for i in range(0,3): if not text[i].isdecimal(): retur

正则表达式第三回--模式、分组与前瞻

贪婪的正则 正则是默认贪婪的,它会尽可能多的匹配,我想这是一个大家都知道的事实. 经典例子: '12345678'.replace(/\d{3,7}/g, '#') // 输出: #8 可以看到,规则是匹配3~7个数字,由于正则默认是贪婪模式,匹配了最大数量7个: 如果我们希望它尽可能少的匹配,也就是说一旦匹配成功就不继续匹配了,只需要在量词后面加个问号即可. '12345678'.replace(/\d{3,7}?/g, '#') // 输出: ##78 分组 我们知道,量词是作用于紧挨着它的