Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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
C# 如何使用正则表达式忽略字符串中的单词_C#_Regex - Fatal编程技术网

C# 如何使用正则表达式忽略字符串中的单词

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 如何

我需要一个正则表达式,可以用来做一个不匹配。以下面的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

如何使用.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