Home  >  Article  >  Backend Development  >  求正则表达式含义

求正则表达式含义

WBOY
WBOYOriginal
2016-06-23 14:07:55878browse

preg_match('~^(ftp|news|http|https)?://(.*)$~D', $url, $matches)


疑问
1.正则表达式一般写法 '/正则/'
这个为什么这样写?

2.此正则啥意思?


回复讨论(解决方案)

~没有遇到过,应该和/差不多吧,就是定界符的意思。

^(ftp|news|http|https)?://(.*)$
^字符串开始处开始匹配
(ftp|news|http|https)? 匹配ftp或者news或者http或者https,含有零次或者1次
://   匹配://
(.*) 匹配任意字符任意次数
$字符串结束


最后的大写字母D:
D (PCRE_DOLLAR_ENDONLY) 如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。

默认的规则串定界符是 /
但你也可以指定其他字符为定界符,以减少特使字符的转义

D 模式用的极少,自己理解吧
D(PCRE_DOLLAR_ENDONLY)
如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。 

这个正则应该是分析一个url列表用到的
列表格式大概是每行一个url并且以换行结尾

如果不使用D只能找到到第一个匹配那行

默认的规则串定界符是 /
但你也可以指定其他字符为定界符,以减少特使字符的转义

D 模式用的极少,自己理解吧
D(PCRE_DOLLAR_ENDONLY)
如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。 

默认的规则串定界符是 /
但你也可以指定其他字符为定界符,以减少特使字符的转义

受教~

http://blog.csdn.net/tigerdsh/article/details/8866456 看了这个你就明白了,详细的解释

首先楼主应该理解preg_match(),它是一种是基于perl语言,使用“preg_”为前缀命名的函数。在这里,其实就是用$url替换$matches里符合~^(ftp|news|http|https)?://(.*)$~D这一个正则的字符串。
~是一个定界符,默认的是/,当然也可以自己定义,前后对应就可以了。
^是开头,$是结尾,|是或,?是出现0次到1次,*是出现1次到多次,.是匹配除 \n 以外的任何字符。D是不匹配任何 0 到 9 之间的单个数字,相当于 [^0-9]。 
可以看我的博客:http://blog.csdn.net/wf120355/article/details/8753593

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn