正则里的(.*?)是什么意思

来自:    更新日期:早些时候
正则表达式中 (?=.*[a-z]) 什么意思?~

意思是断言,只匹配一个位置。
例如:
想匹配一个“人”字,但是只想匹配中国人的人字,不想匹配法国人的人,就可以用一下表达式
(?=中国)人
所以,楼主的表达式与其他通配符连用才能起到效果。
(?=.*[a-z])\d+
这个就表示 匹配以“任意字符连着一个小写字母”开头的数字,只匹配数字。(?<=exp)这个是放后面的。


扩展资料:
正则表达式的特点是:
1、灵活性、逻辑性和功能性非常强;
2、可以迅速地用极简单的方式达到字符串的复杂控制。
3、对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

我也是找答案时看到的,发现这里回答的理论是的,但不好让人理解,我也结合其他地方的资料,才能理解他的答案。下面我用两个例子来说明 单引号里面的三个元字符之间的意思 ‘ () ' '\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)
一是显得比较简洁
二是不会存储无意义的内容

.  是任意字符 可以匹配任何单个字符,

例子:正则表达式r.t 可以匹配这些字符串:rat、rut、r t,但是不匹配root。 

.*?  表示匹配任意字符到下一个符合条件的字符

例子:正则表达式a.*?xxx   可以匹配 abxxx  axxxxx  abbbbbxxx

扩展资料:

* 匹配0或多个正好在它之前的那个字符。例如正则表达式。*意味着能够匹配任意数量的任何字符。
? 匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。
.*是指任何字符0个或多个,
.?是指任何字符0个或1个.

.*具有贪婪的性质,首先匹配到不能匹配为止,根据后面的正则表达式,会进行回溯。
.*?则相反,一个匹配以后,就往下进行,所以不会进行回溯,具有最小匹配的性质。

?表示非贪婪模式,即为匹配最近字符 如果不加?就是贪婪模式a.*bc 可以匹配  abcbcbc

参考链接:正则表达式 |百度百科



.是任意字符 

.?的意思是尽可能少的匹配

(.?)设置分组,如果替换,获取,可以用$1参数代替


http://.*?(jpg|png)




.*具有贪婪的性质,首先匹配到不能匹配为止,根据后面的正则表达式,会进行回溯。
.*?则相反,一个匹配以后,就往下进行,所以不会进行回溯,具有最小匹配的性质。

举个例子你就懂了


<input type="text" value="hello word" name="textBox">


value="(.*)"

value="(.*?)"


第一个匹配结果

hello word" name="textBox

第二个匹配结果

hello word


.* 贪婪匹配,加个 ? 进行约束



匹配任意字符(0个或多个),不贪婪(最短匹配)

谢谢,我得到也是这个结果,但是$arr[6]怎么包含了所有的jpg,应该像png一样每个jpg是一个一维数组
仔细看我的正则,和你的还是有区别的

我的正则为什么匹配png时是$arr[0]的形式,匹配jpg时却把所有jpg写在了一个数组里
你少了一个限制贪婪的"?"


正则里的(.*?)是什么意思视频

相关评论:
  • 18476691765正则里的(.*?)是什么意思
    仇缸殃. 是任意字符 可以匹配任何单个字符,例子:正则表达式r.t 可以匹配这些字符串:rat、rut、r t,但是不匹配root。.*? 表示匹配任意字符到下一个符合条件的字符 例子:正则表达式a.*?xxx 可以匹配 abxxx axxxxx abbbbbxxx

  • 18476691765正则表达式(.*?)是什么意思
    仇缸殃是惰性匹配,就是匹配尽可能少的次数。.*?的意思是匹配任意字符,尽可能少的次数。比如:abaaaaabb 用 a.*b去匹配,会匹配到abaaaaabb 全部,应为正则默认贪婪匹配,找到第一个b之后,发现后面还有b,会一直匹配下去。所以 可以使用贪婪匹配,a.*?b 这样的话, 只会匹配尽可能少的次数 就会...

  • 18476691765正则表达式 .*? 是什么意思啊?
    仇缸殃正则表达式中的 .* 表示匹配任意字符(除了换行符)0次或多次。这是一个贪婪匹配,因为它会匹配尽可能多的字符。正则表达式中的 .*? 表示匹配任意字符(除了换行符)0次或多次,但这是一个非贪婪匹配,也就是最小匹配。它只会匹配满足条件的最小字符数。举例说明:- 懒惰模式正则表达式:src=".*?

  • 18476691765正则表达式中“.*?”代表什么?
    仇缸殃解答:点代表的是任意字符。* 代表的是取 0 至 无限长度问号代表的是非贪婪模式。三个链接在一起是取尽量少的任意字符,一般不会这么单独写。用法:他大多用在:.*?a 解释:就是取前面任意长度的字符,到底一个 a 出现,匹配如下q@wer_qwerqweraljlkjlkjlkj,得到:q@wer_qwerqwera 这部分,...

  • 18476691765正则表达式 \\[(.*?)\\] 如何解释
    仇缸殃.*是贪婪匹配,也就是说你第1个出现"["的地方,和最后一个出现"]"的地方 .*?是惰性匹配,也就是说第1个出现"["的地方,和跟着最近的出现"]"的地方

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

  • 18476691765php 正则表达式中的 .*? 表示什么意思?
    仇缸殃是非贪婪模式 .*会匹配后面的一切字符,就是到结束的意思 加?后就是不贪婪模式,这时要看?后边的字符是什么了,如.*?"的意思是遇到双引号则匹配结束

  • 18476691765正则表达式中 .*? 代表什么?
    仇缸殃详情请查看视频回答

  • 18476691765正则表达式@"(.*?)\/([\\w\\d])[\\w\\d]* ?"是什么意思?
    仇缸殃([\\w\\d]) \\w表示任意字母或数字 \\d表示任意数字 所以这里的[\\w\\d]写的有些问题因为[]内的内容只匹配一个字符所以([\\w\\d])和(\\w)的意义应该是一样的 这个正则表达式应该可以改写为:"(.*?)\/(\\w)\\w* ?"

  • 18476691765正则表达式.*??是什么?
    仇缸殃. 代表任意字符,不包括换行符制表符空白符 代表任务数量, 0~正无穷 ?代表有或者没有,*后面的问号代表非贪婪模式匹配,尽可能的少匹配 .*? 是完整的正则表达式,后面的问号是错误的 如果想匹配问号自身,需要使用 反斜杠问号 \\?

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网