C# 如何使用正则表达式忽略字符串中的单词
我需要一个正则表达式,可以用来做一个不匹配。以下面的URL为例C# 如何使用正则表达式忽略字符串中的单词,c#,regex,C#,Regex,我需要一个正则表达式,可以用来做一个不匹配。以下面的URL为例 http://www.site.com/layout/default.aspx http://www.site.com/default.aspx http://www.site.com/layout.aspx 正则表达式不应与包含目录“layout”的任何url字符串匹配 相反,我们应该在 http://www.site.com/default.aspx http://www.site.com/layout.aspx 如何
http://www.site.com/layout/default.aspx
http://www.site.com/default.aspx
http://www.site.com/layout.aspx
正则表达式不应与包含目录“layout”的任何url字符串匹配
相反,我们应该在
http://www.site.com/default.aspx
http://www.site.com/layout.aspx
如何使用.NET正则表达式执行此操作?只需匹配
/layout/
并反转结果,无论使用何种语言
例如,使用PHP:
if(!preg_match('#/layout/#i', $url)) {
// does not match layout
}
PYTHON:
import re
if not re.match('layout'):
#do whatever here
进口稀土
如果未重新匹配(“布局”):
#在这里做什么都行
re是python的正则表达式如果您需要将所有内容压缩到一个正则表达式中,请尝试负前瞻,大致如下所示:
(?!布局)
使用负前瞻:
^(?。*/layout/)
您必须锚定到字符串的开头,否则会出现误报,即,
(?!/layout/)
单独使用是不起作用的。取决于您使用的工具。根据我的回答,可以使用大多数正则表达式实现中支持的负前瞻来完成。这不起作用,因为它将匹配字符串中第一个不后跟“layout”的位置。@Bennor McCarthy:是的,将其与url的实际正则表达式相结合,它就会工作。类似这样的东西(粗糙,未经测试,没有充分考虑示例,所以要小心):http://[-a-z0-9]+.com/(?!layout)。+/*)*[^.]+\..+
请不要真正使用这个正则表达式,它会做出很多错误的假设(就像每个文件都有格式名.extension)。是的,很公平,但是您仍然可以将其绑定到字符串中的确切位置(这可能是可以的,取决于要求)。谢谢,这很有效。我使用“htp://domain/(?!*layout/)。+”进行了删除,因为我需要返回匹配项。很高兴我能提供帮助。如果您想让它更干净一点,可以使用以下命令:(?!.*/layout/)http://domain/.+
import re
if not re.match('layout'):
#do whatever here