关于正则表达式的问题?其实都是一个问题,问的详细点而已,别害怕,皇军不抢粮食。
为什么里面的\d,都要写成\\d,点也是\\.??
最后还整了一个模式单元图中红框,但是却用"?:"给禁止了作用?
还是最后模式单元的问题:为什么要让(\\.\\d+)这个成为模式单元,有什么特殊用处么?
还是最后模式单元的问题:最后结尾还要给模式单元加上一个?,也是说这个整体可以是不存在或者重复一次?为啥啊?
顺便问下^与$ 是指的一行的开头与结尾还是全文的开头和结尾?
正在回答 回答被采纳积分+1
您好,同学可以根据这段代码理解,这段代码是将正则放在了变量中,与课程中直接放在函数中的匹配结果是相同的。另外不使用\\和不添加?:的效果与使用\\和?:的效果是相同的。也就是简化后的正则也可以匹配成功。
<?php // $pattern = "/\\d+\\.\\d+(?:\\.\\d+)?/"; $pattern = "/\d+\.\d+\.\d+/"; $subject = "bundled (2.1.0 compatible)"; $result = preg_match($pattern,$subject,$match); print_r($match);
关于使用\\和?:的含义,在前面的问答中已经进行了解释。
另同学说\\d与\d的结果不同,请反馈详细的代码。祝学习愉快!
您好,1. \\d 前面多了第一个\ 是为了在程序中转义第二个\,这个你可以忽略。
2和3. (?:pattern):匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
4. ?匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。并不是整体不存在或重复一次。
5.多行指的是行首和行尾。一行指开头和结尾。
祝学习愉快!
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星