正则表达式里的?:是啥意思例如(?:a|b)

作者&投稿:呼趴 (若有异议请与网页底部的电邮联系)
关于java正则表达式,[a-z]{1,}这是啥意思?~

意思是:匹配1到10个英文字母(大小写不限),还有,号。
如果是匹配1-10个不限大小写的英文字母,正则表达式应该为:[a-zA-Z]{1,10}

表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.
\s 匹配任何空白非打印字符,包括空格、制表符、换页符等等。等价于 [ \f
\v]。注意 Unicode 正则表达式会匹配全角空格符。
\S 匹配任何非空白非打印字符。等价于 [^ \f
\v]。
*限定符是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
比如:Chapter 1 - 介绍正则表达式
使用//匹配的结果为:H1>Chapter 1 - 介绍正则表达式</H1。
使用//匹配结果为:H1。
拓展知识
正则表达式特殊字符及其含义

我也是找答案时看到的,发现这里回答的理论是的,但不好让人理解,我也结合其他地方的资料,才能理解他的答案。下面我用两个例子来说明 单引号里面的三个元字符之间的意思 ‘ () ' '\1' '?:' 其实我自己也是加深一下这块的印象
在一段英文里,我们需要匹配连续重复的单词,如 I'm lost lost. 这里发现lost重复了,当内容很多时
我们就用正则来 \b(\w+)\b\s+\1\b 来找这样连续重复单词
正则规则解释
\b匹配单词的开始
(\w+)匹配单词并存储一份单词 当后面有反向引用时 则可以调用这个存储的单词
\b匹配单词的结束
\s+一个或多个空格
\1这个是反向引用 引用前面括号里存储的单词 也就是 \w+
\b单词结束
了解了前面的 这时如果把?:加进去
\b(?:\w+)\b\s+\1\b
这个表达式就无效了 因为(?:\w) 这个单词虽可以被匹配但不会存储一份 后面出现的 \1 也不会调用前面括号里的单词 所以 表达式就失效了
那么(?:)有什么用呢
再举例简单说明一下
想在一篇文章中找"program"和"project"这两个单词
正则表达式可表示为 program|project
也可表示为 pro(gram|ject)
但用了()就表示会匹配括号里存在的内容且存储一份
用 | 隔开了 也就是说 gram和ject 都被存储了一份 但这样存储的内容是无意义的
所以表达式写成这样 pro(?:gram|ject)
一是显得比较简洁
二是不会存储无意义的内容

  1. 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

  2. 这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

  3. .+?表示最小匹配

  4. 举例说明.+?与.+的区别

  5. <a href="xxx"><span>

  6. 如果用<.+>匹配,则匹配结果是

  7. <a href="xxx"><span>

  8. 如果用<.+?>匹配,则匹配结果是

  9. <a href="xxx">

  10. 也就是.+?只要匹配就返回了,不会再接着往下找了



(?:pattern)
匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

(?:)
(?!)
它们两个是相反的功能


正则表达式里面 .* 和 .*? 有什么区别?
表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.\\s 匹配任何空白非打印字符,包括空格、制表符、换页符等等。等价于 [ \\f\\n\\r\\t\\v]。注意 Unicode 正则表达式会匹配全角空格符。\\S 匹配任何非空白非打印字符。等价于 [^ \\f\\n\\r...

在C语言中?:表达式是什么意思?
一、表达式的意义 [1]引表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。约束变量在表达式中已被指定数值,而自由变量则可以在表达式之外另行指定数值。给与自由变量一些数值指定,可能可以给与一个表达式数值,即使对于一些自由变量的值,表示式...

正则表达式 .*? 是什么意思啊?
表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.举例介绍:如: 懒惰模式正则:src=".*?"结果:src="test.jpg"

正则表达式中的\\{}\\{}\\{}是什么意思
\/\\{\\{(.+?)\\}\\}\/g 最前面的“\/”与最后面的“\/”是分隔符,表示正则表达式的开始与结束。最后的“g”标志则表示正则表达式使用的global(全局)的状态。使用 global 标志表明在被查找的字符串中搜索操作将查找所有符合的项,而不仅仅是第一个。这也被称为全局匹配。【相关的标志还有i(...

c语言中条件运算 结合方向 从右到左 什么意思
运算符的结合方向(顺序)决定了计算的顺序。条件运算符(? :)的结合方向是从右到左,也即运算符的匹配顺序是从右往左的。下面举例说明结合顺序从右到左的含义:int a=1, b=3, c=2, d;d = a>b ? a : c>b ? c : b; \/\/ 根据从右到左的结合顺序,则该表达式等价于d = (a>b ?

一道C语言很简单的题目,懂C语言的进来帮忙解下
首先要知道? :这是一个三目运算符,如 (表达式)? x : y, 意思是说如果表达式是正确的,那么就选择x,如果错误的就选择y。那我们看这里,可以分成三部分(a++<b) ? (a++):(c<d?a++:d)。而后面的(c<d?a++:d)又可以分成三部分(c<d) ? (a++):(d)。我们先看第一个式子...

正则表达式中的()[]{}这三种括号一般有什么区别?
区别:用法区别 () 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。[]是定义匹配的字符范围。{}一般用来表示匹配的长度。具体用例 1、()(\\s*)表示连续空格的字符串。2、[][a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字,包括a到z,A到Z,0到9。[\\s*]表示...

c语言的符号含义
?:是连在一起用的,是一个三元运算符,例子如:z<y?z:x,表示如果z<y成立,则执行z或者是返回z部分操作的结果,否则执行x或者返回x部分操作后的结果。所以你上面的等式:w<x?w:z<y?z:x,先判断w<x是否成立,明显4<3是不成立的,所以执行冒号(:)后面的操作z<y?z:x,z<y是成立的,...

C语言中,a<b?b:c<d?a:d,什么意思!
如果a小于b的话得到b 的值,否则,如果c 小于的话,得到a的值,都不是的话,得到d的值,注意运算符?:是从右向左结合的

正则表达式中规则$pattern ="\/((?<!<))($pattern)(?![^<>]*(?:>|<...
众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。 大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式...

戚墅堰区13015285008: 正则表达式中的"\."表示什么意思 -
宜堵天香: 正则表达式中的"\."表示什么意思?\ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配.例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符. . 匹配任何单个字符.例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root.\ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配.例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符.

戚墅堰区13015285008: 正则表达式 .*? 是什么意思啊? -
宜堵天香: 表达式 .* 就是单个字符匹配任意次,即贪婪匹配. 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配. 举例介绍: 如:<img src="test.jpg" width="60px" height="80px"/> 懒惰模式正则: src=".*?" 结果:src="test.jpg" 扩展资...

戚墅堰区13015285008: 正则表达式中的/是什么意思 -
宜堵天香: /是正则表达式分界符,两个/里面的内容是正则表达式,而后面的i说明忽略大小写.另外,不是/b,而是\b才是单词分界符.

戚墅堰区13015285008: 正则表达式 !\\^\\.\\*\\$!([^!]+)! 是什么意思 -
宜堵天香: 在java中要进行转义,所以转化成标准正则表达式后就是“ !\^\.\*\$!([^!]+)!” 正则表达式中\^ 表示就是^的本身的意思,\. \$ ,同理得知;所以最后你的表达式表示!^.$! 开头后面跟任意非!的字符串重复一次到无穷次,然后以!结束.例如:1321312!^.$! 123!123123. 如果想让字符串只能是!^.$! 123! ,两边没有其他字符的, 那么在你正则的首加上^尾加上$.

戚墅堰区13015285008: 正则表达式里边<.+?>什么意思 -
宜堵天香: 正则表达式里边<.+?>表示匹配:“<”开始,其后至少含有1个除了“>”的任意字符,且再遇到“>”,就结束匹配.< 表示:匹配字符“<”. + 表示:匹配前面的子表达式一次或多次(大于等于1次).例如,“zo+”能匹配“zo”以及“...

戚墅堰区13015285008: 正则表达式<*>什么意思 -
宜堵天香: 点 匹配任何单个字符.例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root. * 匹配0或多个正好在它之前的那个字符.例如正则表达式.*意味着能够匹配任意数量的任何字符. ? 匹配0或1个正好在它之前的那个字符.注意:这个元字符不是所有的软件都支持的.

戚墅堰区13015285008: 正则表达式中 \Z到底是什么意思 -
宜堵天香: 正则表达式中的\意思是将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符. 例如, 'n' 匹配字符 'n'.'\n' 匹配换行符.序列 '\\' 匹配 “\”,而 '\(' 则匹配 “(”. 正则表达式(regular expression)描述...

戚墅堰区13015285008: 正则表达式\.中的\代表着什么含义,是转义吗? -
宜堵天香: 是转义,本身在正则中 '.' 代表除换行外所有的字符 现在加个\ 表示 仅仅只表示原本的点

戚墅堰区13015285008: 正则表达式中的 *?或 *+ 是什么意思 -
宜堵天香: *——表示匹配前面的字符0个或多个 +——表示前面的字符1个或多个 ?——(1)放在其他字符后面表示前面的字符可以有,也可以没有 (2)放在*、+后面表示匹配尽可能少的字符 例如:字符串fooooo,正则fo*和fo+会匹配整个字符串, fo+? 匹配fo, fo*? 匹配f *+没有这样的用法,除非是匹配星号本身,即: \*+ 表示一个或多个星号

戚墅堰区13015285008: 这个正则表达式是什么意思额?/^(http:\/\/)?([^\/]+)/i -
宜堵天香: ”^(http:\/\/)? “表示以http://开头.”?([^\/]+) “ 表示后面紧跟多个非 / 的字符.其中的”?“表示后面的([^\/]+) 可有可无,即可出现0~1次.”/i “表示对大小写不敏感,即忽略大小写.合起来的意思就是:匹配一个以http://开头,后面紧跟...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网