Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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,我正在使用来测试我的正则表达式 我正在尝试创建一个与URL匹配的正则表达式,这意味着它必须以http://开头。不用担心http://s,因为我有一个数组,可以分别检查每一个。http://不会硬编码到表达式中。它将是一个变量字符串 这是我到目前为止得到的正则表达式: /http:\/\/.+\s+/g 它应该匹配http://,然后匹配之后的任何字符,直到匹配到空格 例如,灰色是应该匹配的: http://example.com/foo 是我最喜欢的网站和网站http://192.168.0.

我正在使用来测试我的正则表达式

我正在尝试创建一个与URL匹配的正则表达式,这意味着它必须以http://开头。不用担心http://s,因为我有一个数组,可以分别检查每一个。http://不会硬编码到表达式中。它将是一个变量字符串

这是我到目前为止得到的正则表达式:

/http:\/\/.+\s+/g 它应该匹配http://,然后匹配之后的任何字符,直到匹配到空格

例如,灰色是应该匹配的:

http://example.com/foo 是我最喜欢的网站和网站http://192.168.0.1 是我的网关IP

但是,整个字符串与该正则表达式匹配

消极前瞻\s+,这是我认为我应该关心的。我期待它匹配,直到它遇到空白。如果我使用这个负前瞻:?!$,它将匹配除行尾最后一个字符以外的所有字符,如预期的那样


为什么会这样按预期工作,但不是吗\s+?

如果要匹配到空格,请使用\s,它表示任何非空格字符

~http://\S+~
注意:如果使用PHP,可以使用不同的分隔符来避免转义。并且g不是一个有效的修饰符,你可以用非贪婪的方式


没有g?该网站使用它,它的工作。哦,好吧。这是可行的,我明白了。由于新的分隔符,+1表示简洁且更容易看到:但这与整个字符串匹配,就像我的一样。如果使用我的示例,它也会匹配URL后面的单词。
http:\/\/.+?(?=\s)