首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学习正则表达式 - 量词

{m,n} 是通用形式的量词正则表达式还有三个常用量词,分别是 +、?、*。它们的形态虽然不同于 {m,n},功能却是相同的,因此也可以把它们理解为“量词简记法”。具体说明见下表。...要使一个量词成为懒惰的,必须在普通量词后添加一个问号 ?。         占有量词会覆盖整个目标然后尝试寻找匹配内容,但它只尝试一次,不会回溯。占有量词就是在普通量词之后添加一个加号 +。...下表列出了占有量词。 语法 说明 ?...对于上面的数据行,结果为:         第一感觉这是使用正则表达式的场景。只要将每对中括号连同其中的内容替换为单个字符,再用char_length函数求长度即可。...非 dotall 模式下的正则表达式中,“.”表示匹配除换行符 \n 之外的任何单字符,“*”表示零次或多次。所以 “.*” 连在一起就表示任意字符出现零次或多次。没有“?”表示贪婪模式。比如 a.

17320

正则表达式 量词、条件结构

量词量词正则表达式的灵魂,也是正则表达式具有强大的文本处理能力的核心原因。常见的量词包括:量词含义* 匹配0次或多次 +匹配一次或多次?...注意量词作用于c,要让量词作用于abc,可以加括号,如(abc)+。$content =~ s/abc+/abc/g;匹配优先正则表达式(.*)(.*)匹配文本abcdef,应该是什么结果?...出现这样的结果是因为量词匹配默认是匹配优先的,它会尽量多匹配字符,仅在匹配失败的时候进行回溯。如果正则表达式是(.*)(.+),第一个.*匹配abcde,第二个.+匹配f。匹配的过程是,第一个....匹配m次到n次在量词后加个?可以使量词变成非匹配优先。这个时候量词会尽量少的匹配字符,仅在匹配失败的时候匹配更多的字符。正则表达式(.*?)(.*?)匹配文本abcdef,结果是两个.*?...正则表达式(.*+)(.+)匹配文本abcdef,会匹配失败,.*+匹配了所有文本,.+无法匹配,而且因为没有状态保存,无法回溯,所以匹配失败。条件结构量词?

52000
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    正则表达式之量词

    一、概念 我们通常可以通过正则的一些规则匹配到所需的数据,例如[0-9]或\d来匹配单个数字字符等。 量词,是用来限定我们定义好的规则出现的次数。...二、常见量词 量词 说明 {n} 精确匹配n次 {n,} 匹配n次或更多次 {0,1} 匹配零次或一次) {1,0} 匹配一次或更多次 {1, } 匹配零次或更多次 {m,n} 字符至少有m个,至少有n...注意 Unicode 正则表达式会匹配全角空格符。 \r 匹配一个回车符。等价于 \x0d 和 \cM。 \n 匹配一个换行符。等价于 \x0a 和 \cJ。 \f 匹配一个换页符。...忽略优先的量词会匹配尽可能少的内容,只需要满足下限,匹配就能成功 忽略优先量词 *?...四、匹配优先量词 量词在正常情况下都是匹配优先的 匹配优先量词 * + ? {n} {n,m} {n,} {,m} 五、占有优先量词  占有优先是最大匹配后不“交还” 占有优先量词 ?

    19510

    正则表达式中的量词

    自我感觉量词正则表达式里最不容易理解的地方,所以特别为它做了个总结。 为了容易理解,会简单地结合正则表达式引擎的工作方式来讲。...一、没有量词正则表达式引擎的工作方式 在没有量词之前,正则表达式的一个符号块只能匹配文本中的一个符号,如[abc]匹配字符a或b或c。此时,正则表达式的匹配流程非常的简单。...用以上例子来说明引擎处理贪婪型量词的方式,首先引擎读取了正则表达式的首字符块和正则表达式的>成功匹配,而此时正则表达式中的字符块被全部匹配了,结果就产生了。 在贪婪型量词的后面加一个?就成了勉强型量词,勉强型量词会使被修饰字符重复尽可能少的次数。...四、占有型量词 在贪婪型量词的后面加一个+就成了占有型量词,占有型量词让被修饰字符重复最大次数。乍一看和贪婪型量词没啥区别啊,其实少了三个字,尽可能。还是用上面的例子来说,此时正则表达式为.

    10810

    正则表达式字符组元字符量词

    一.正则表达式能干什么?   ...b 或 符合a规则的或者b规则的都可以被匹配     如果a规则是b规则的一部分,且a规则比b规则要苛刻/长,就把a规则写在前面,将更复杂的\更长的规则写在最前面   () 分组 表示给几个字符加上量词约束的需求的时候...,就给这些量词分在一个组 五.量词    {n}表示 这个量词之前的字符出现n次    {n,} 表示这个量词之前的字符至少出现n次    {n,m} 表示这个量词之前的字符出现n-m次    ?...表示匹配量词之前的字符出现 0次 或者 1次 表示可有可无    + 表示匹配量词之前的字符出现 1次 或者 多次    * 表示匹配量词之前的字符出现 0次 或者 多次 六....正则表达式的匹配特点 : 贪婪匹配   它会在允许的范围内取最长的结果   非贪婪模式/惰性匹配 : 在量词的后面加上?      .*?x 匹配任意非换行符字符任意长度 直到遇到x就停止

    99310

    全网最易懂的正则表达式教程(3)- 量词

    量词(限定符) 代码/语法 说明 * 重复 0 次或更多次 + 重复 1 次或更多次 ?...\w* 匹配数量 1 匹配结果 yy12 second 匹配文本 yy12_菠萝 正则表达式 .1* 匹配数量 1 匹配结果 yy12_菠萝 third 匹配文本 yy_菠萝 正则表达式 \d*\...w* 匹配数量 1 匹配结果 yy_ + 的栗子 first 匹配文本 yy12菠萝 正则表达式 \w+ 匹配数量 1 匹配结果 yy12 second 匹配文本 yy1112菠萝 正则表达式 .1...的栗子 first 匹配文本 yy12菠萝 正则表达式 \w? 匹配数量 1 匹配结果 yy12 second 匹配文本 yy12菠萝 正则表达式 ._?....poloyy 正则表达式 y{1,} 匹配数量 1 匹配结果 yy second 匹配文本 13501489999 正则表达式 ^135\d{1,}$ 匹配数量 1 匹配结果 13501489999

    83520

    js正则小结

    1,\ 斜杠用于转义,在js正则里,只有一些元字符(*,?,.等)和\本身需要转义,其他的不需要转义,如果其他的字符前面使用了\,可能会产生负面影响,比如\b,\t这些有特殊含义的转义。...此外,在js正则中,\还有一个用处在于使用new RegExp()形式创建正则对象时,比如new RegExp('a\*a'),其中*是乘以的意思,js引擎在解析该正则表达式字符串时,会消耗掉这个斜杠,...2 ^ 该元字符比较简单,就是表示该正则是从字符串的首字符开始匹配的,有一个地方需要注意的是,如果该正则表达式加了m标记时,匹配到了行分隔符的时候就会结束。然后会在下一行继续匹配。...$n ()代表捕获分组,x代表的表达式所匹配的内容可以在x所有的正则中或者其他地方使用。...$&是一个特殊的变量,他代表是整个正则表达式匹配到的结果。也就是xy。 7 (?:x) 非捕获分组,也就是()中的表达式捕获到分组不可在其他地方使用。'x'.replace(/(?

    7.6K50

    Js正则Replace方法

    JS正则的创建有两种方式: new RegExp() 和 直接字面量。...就是匹配最多由1个字母或数字组成的字符串 六、test 、match 前面的大都是JS正则表达式的语法,而test则是用来检测字符串是否匹配某一个正则表达式,如果匹配就会返回true,反之则返回false.../\d+/.test("123") ; //true /\d+/.test("abc") ; //false match是获取正则匹配到的结果,以数组的形式返回 "186a619b28".match...第2个参数可以是一个普通的字符串或是一个回调函数 如果第1个参数是RegExp, JS会先提取RegExp匹配出的结果,然后用第2个参数逐一替换匹配出的结果 如果第2个参数是回调函数,每匹配到一个结果就回调一次...:记录本次匹配的开始位置 source:接受匹配的原始字符串 以下是replace和JS正则搭配使用的几个常见经典案例:  (1)实现字符串的trim函数,去除字符串两边的空格 String.prototype.trim

    11.9K100

    【数理逻辑】谓词逻辑 ( 谓词逻辑基本等值式 | 消除量词等值式 | 量词否定等值式 | 量词辖域收缩扩张等值式 | 量词分配等值式 )

    文章目录 一、 消除量词 等值式 二、 量词否定 等值式 三、 量词辖域收缩扩张 等值式 四、 量词分配 等值式 一、 消除量词 等值式 ---- 消除量词等值式 : 有限个体域 D = \{a_1..., a_2 , \cdots , a_n\} , 消除量词 的 等值式 : 有限个体域 消除 全称量词 : \forall x A(x) \Leftrightarrow A(a_1) \land A...\cdots \lor A(a_n) 一定要注意前提 : 有限个体域 ; 个体域是无限的时候 , 就需要量词 , 如 全总个体域 ; 二、 量词否定 等值式 ---- 否定全称量词 : 全称量词 \...forall 之前 的 否定联结词 , 可以移到 量词 之后 , 量词要变成 存在量词 \exist ; \lnot \forall x A(x) \Leftrightarrow \exist x...: 存在量词 \exist 之前 的 否定联结词 , 可以移到 量词 之后 , 量词要变成 全称量词 \forall ; \lnot \exist x A(x) \Leftrightarrow

    1.3K00
    领券