Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Regex 正则表达式改为“;“忽略”;不是";排除“;_Regex_Thunderbird - Fatal编程技术网

Regex 正则表达式改为“;“忽略”;不是";排除“;

Regex 正则表达式改为“;“忽略”;不是";排除“;,regex,thunderbird,Regex,Thunderbird,我完全迷路了。我需要一个正则表达式 可以检测以下4个起始URL中的任意一个 ^(.*http://.*|.*http%3A%2F%2F.*|.*https://.*|.*https%3A%2F%2F.*)$ 还有 应检测: (任何标点、空格或退格)(大写或小写字母w的3倍)(一点)(任何) 还有。哪个是重要的 应该忽略,但不排除。以下精确字符串(该字符串是否存在于页面中) 这对我来说很复杂,因为我仍然需要将其包含在正则表达式行中 即使它被忽略,否则,它将匹配并在中找到 (.*http

我完全迷路了。我需要一个正则表达式 可以检测以下4个起始URL中的任意一个

 ^(.*http://.*|.*http%3A%2F%2F.*|.*https://.*|.*https%3A%2F%2F.*)$
还有

应检测: (任何标点、空格或退格)(大写或小写字母w的3倍)(一点)(任何)

还有。哪个是重要的

应该忽略,但不排除。以下精确字符串(该字符串是否存在于页面中)

这对我来说很复杂,因为我仍然需要将其包含在正则表达式行中 即使它被忽略,否则,它将匹配并在中找到

    (.*http://.*|.*http%3A%2F%2F.*|.*https://.*|.*https%3A%2F%2F.*)
我的目标是找到/匹配除此之外的任何url

    http://www.w3.org 
即使它在页面中,或者它不存在。 因此,如果页面中只有以下内容:

    http://www.w3.org
&没有其他url。。那就不应该匹配了


谢谢Tyler,但我的正则表达式知识几乎为零,我只能知道当我右键单击命令来选择regulazy或Reguexr中的操作时命令会做什么((

因此,我根据提供给您的url更新了我的命令: href%3D%22http%3A%2F%2Fwww%2Edommermuth%2D1%2Ecom &它的工作原理是:

https?(:/|%3A%2F%2F)(?!www.w3.org)(*)

但由于我缺乏知识,我不明白下面该怎么做

“您可以做的是使http部分成为可选的,或者必须匹配http或www或两者。我最近回答的另一个问题中出现了这种类型的正则表达式-多个preg_替换不同URL的正则表达式”

我尝试添加此项,但不起作用: (www

我现在所缺少的就是检测以www开头的URL

(任何标点符号、空格或退格)(大写或小写字母w的3倍)(一个点)(直到它到达空格或行尾的任何东西)

好的,请尝试以下操作:

/\bhttps?(://|%3A%2F%2F)(?!www\.w3\.org)(.*)\b/g
在此处测试:

该测试链接使用javascript样式的正则表达式,但应该在其他地方使用

重要的部分是后半部分——一个否定的前瞻,它检查接下来的内容不是确切的文本
www.w3.org

我压缩了您拥有的内容:我的匹配
http
,然后是可选的
s
,然后是
://
%3A%2F%2F

我将整个内容包装在单词边界中,您可以将其更改为引号或任何您需要的内容。全局标志允许您匹配多个项目


关于OP的问题:

D%22 可能出现在http或https之前

缺少此项并应匹配: href%3D%22http%3A%2F%2Fwww%2Edommermuth%2D1%2Ecom

如果这很重要,只需删除regex前后的单词boundary
\b
,这样http就可以在任何地方匹配

regex命令应该检测:(任何标点、空格或退格)(大写或小写字母w的3倍)(一个点)(任何内容)

此正则表达式将无法匹配这样的链接-查找www本身并不是检查链接的好方法。您可以做的是将http部分设置为可选的,或者必须匹配http或www或两者。我最近回答的另一个问题中出现了这种正则表达式-


编辑#2:

(任何标点符号、空格或退格)(大写或小写字母w的3倍)(一个点)(直到到达空格或行尾的任何东西)

正如我上面提到的,您所描述的内容将与类似的url不匹配-但如果这是您想要的,请使用以下内容:

(\W|^)[wW]{3}\.[^\s$]+
相反,我想你想要的是这个,这是我的第一个答案和上面另一篇文章的链接的组合

((https?(://|%3A%2F%2F))(www\.)|(https?(://|%3A%2F%2F))|(www\.))(?!(www\.)?w3\.org)([^</\?\s]+)[^<\s]*

((https?(:/|%3A%2F%2F))(www\)(https?(:/|%3A%2F%2F))(www\)(?!(www\)?w3\.org)([^不要链接到其他网站上的帖子(它们往往会过期)。学会简单地正确设置问题的格式(代码中的URL不算作链接).您是否需要将其全部放在1个正则表达式中?为什么不合并2个正则表达式,第一个要匹配,第二个要排除?您使用的是哪种编码语言?我不理解“忽略”和“排除”之间的区别。您想编写一个与特定URL格式匹配但与w3格式不匹配的正则表达式。对我来说,这仍然是排除。.Net正则表达式对吗?如果是这样,请将其添加到问题标记中。或者,如果可能,您最终可以尝试修复此问题,我修改了我的命令:请注意,这比OP稍微宽松一些,并且将匹配
https%3A/%2F
。作为等价物,您需要
https?(://|%3A%2F%2F)
为了完整性,您应该避开“.s”-否则,这也会忽略wwxw3.org。不清楚这是用来做什么的,但这种类型的遗漏是细微错误和安全漏洞的来源。感谢您捕捉到@gregmac-更新了正则表达式和link@user3451630
wye.cg/ye3
不应匹配,贝卡使用它不遵循您给我的任何规则。它不是以http或www开头的,这是您用来查找链接的。我不知道您现在尝试使用的规则。这是我的最后一个命令,其中有一个错误,在这里解释:
((https?(://|%3A%2F%2F))(www\.)|(https?(://|%3A%2F%2F))|(www\.))(?!(www\.)?w3\.org)([^</\?\s]+)[^<\s]*