Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 行首的正则表达式模式不匹配_Php_Regex - Fatal编程技术网

Php 行首的正则表达式模式不匹配

Php 行首的正则表达式模式不匹配,php,regex,Php,Regex,我有这样的模式: /([^>'"])(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/ 将此用作主题时: http://www.google.com <a href="http://www.google.com">http://www.google.com</a> http://www.google.com http://www.google.com http://www.google.com 它与最后一个http://

我有这样的模式:

/([^>'"])(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/
将此用作主题时:

http://www.google.com <a href="http://www.google.com">http://www.google.com</a> http://www.google.com
http://www.google.com  http://www.google.com
它与最后一个
http://www.google.com
但不是行开头的第一个。我怎样才能使它也与第一行开头的第一行相匹配?(并且继续在锚定标记内不匹配)

这是因为
[^'>]
表示任何一个字符不是“
。行首的
http
前面没有一个字符,这就是它不匹配的原因

一种可能性(不一定是最好的)是使用以下内容:

(([^'">])(http))|(^http)
(两种可能的模式之一)。这基本上意味着给我所有您当前指定的内容以及行开头的“http”

我毫不怀疑有更为先进的正则表达式功能,如向前看、反向向后看或(a)项下鲜为人知的秘密查看,有更为复杂的方法来实现这一点,但大多数时候我更喜欢简单


(a) 这个答案中提到的一些特征实际上可能不存在:-)

这是因为
[^'>]
表示任何一个字符不是“
。行首的
http
前面没有一个字符,这就是它不匹配的原因

一种可能性(不一定是最好的)是使用以下内容:

(([^'">])(http))|(^http)
(两种可能的模式之一)。这基本上意味着给我所有您当前指定的内容以及行开头的“http”

我毫不怀疑有更为先进的正则表达式功能,如向前看、反向向后看或(a)项下鲜为人知的秘密查看,有更为复杂的方法来实现这一点,但大多数时候我更喜欢简单



(a) 本答案中提到的某些功能实际上可能不存在:-)

/(^ 124;[^>'”)(http ^ ftp)+(s)?:(\/\/)((\w ^ 124\.)+)(\/)(\ s+)?(\s+)/
将为您解决此问题。
内部将否定其余字符。您必须将
保留在正则表达式的开头和
[]外部
要匹配行的开头

/(^ |[^>”)(http | ftp)+(s)?:(\/\)(((\w |\)+)(\/)?(\s+)/
将为您执行此操作
^
内部的
[]
将否定其余字符。您必须将
^
保留在正则表达式的开头和
[]
之外,以匹配行的开头

try
([^'>])?(http)
(未测试)

try
([^'>])?(http)
(未测试)

这将匹配锚标记内部的内容,但它没有用处:(这将与锚定标记内的锚定标记相匹配,但这并不有用:(这一个在锚标记内也匹配。我刚刚运行,我只获得了第一个谷歌和第四个谷歌的匹配。我认为它在锚标记内不匹配。你能给一个链接到小提琴,你在锚标记内获得匹配。我刚在开始时对正则表达式做了更改,它是(^ |[^>“]))它只是将行或条件的开头添加到您给定的正则表达式中。这是小提琴……它打印
[”http://www.google1.com", " http://www.google4.com"]
在控制台上。嗯,当使用此站点进行测试时:我在锚内获得匹配,但其他人给了我很好的结果。奇怪。转到链接并粘贴您的正则表达式,然后
http://www.google.com  http://www.google.com
作为主题。但是在这里:global on可以工作是的,您需要使用global on来匹配整个in放。否则它会在第一场比赛后停止。这一场也在锚标记内匹配。我刚刚跑了,我只得到了第一个谷歌和第四个谷歌的匹配。我认为它在锚内不匹配。你能给一个链接到你在锚内得到匹配的小提琴吗。我只是在开始时对正则表达式做了更改,这是(^ |[^>“]),它只是将行或条件的开头添加到您给定的正则表达式中。这是小提琴……它打印
[”http://www.google1.com", " http://www.google4.com"]
在控制台上。嗯,当使用此站点进行测试时:我在锚内获得匹配,但其他人给了我很好的结果。奇怪。转到链接并粘贴您的正则表达式,然后
http://www.google.com  http://www.google.com
作为主题。但是在这里:global on可以工作是的,您需要使用global on来匹配整个in放,否则在第一场比赛后就会停止。