Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 用于筛选2个URL的正则表达式_Regex_C# 4.0 - Fatal编程技术网

Regex 用于筛选2个URL的正则表达式

Regex 用于筛选2个URL的正则表达式,regex,c#-4.0,Regex,C# 4.0,我可以使用正则表达式筛选(或匹配)下面提到的2个URL吗 及? 更新用法如下 <rule name="Skip HTTPS" enabled="true" stopProcessing="true"> <match url="I need regex here" ignoreCase="true" /> <conditions> <add input="{HTTP}" pattern="OFF" />

我可以使用正则表达式筛选(或匹配)下面提到的2个URL吗

及?

更新用法如下

 <rule name="Skip HTTPS" enabled="true" stopProcessing="true">
      <match url="I need regex here" ignoreCase="true" />
      <conditions>
        <add input="{HTTP}" pattern="OFF" />
      </conditions>
      <action type="None" />
    </rule>

更新2:

如果我这样说,它会起作用吗

 <match url="(Marketing|getinfo)" ignoreCase="true" />

您可以使用管道
|
字符作为交替和括号。添加前导的
^
和尾随的
$
将表达式“绑定”为仅匹配没有前导或尾随垃圾的确切URL,并转义斜杠(充当正则表达式分隔符)和点(
匹配任何字符)。因此:


如果我正确地理解了您的需求,那么它是向前的:
(http:\/\/www\.domain\.com\/owner\/Marketing;http:\/\/www\.domain\.com\/owner\/getinfo)
。请参见

好的,这一个似乎有效

/http:\/\/www\.domain\.com\/owner\/(Marketing|getinfo)/

但是,当您将整个字符串与插入符号和美元符号进行比较时,regexpal没有将字符串匹配起来,
^$
,也许更有经验的人会知道为什么

为什么不能只使用
if…或…
?我可以理解大多数url匹配,但为什么你不能只检查最后一部分,即;最后一个斜杠后面的部分?@pythonian29033我需要把它放在web.config文件的url重写模型上。好的,让我看看是否可以把它放在一起then@pythonian29033我已经更新了我的问题。请检查一下。你能从你的正则表达式中删除这个部分吗(即使用http删除“”)?因为它是公共部分。@Sampath是的,你可以,你也可以像这样使用结尾部分
/\/(Marketing | getinfo)$/
,但为了安全起见,您希望至少包含所有者部分,并且不包含美元符号,因为我猜页面可能会将参数发布到其中<代码>/\/owner\/(营销| getinfo)/这样更好吗<代码>(http:\/\/www\.domain\.com\/owner\/(?:Marketing | getinfo))请查看我的“更新2:”并让我知道它是否正确?关于更新2:如果这样说,它将只匹配URL的最后一部分。如果你想匹配整个URL,你必须使用我给你的正则表达式。你可以使用regex101.com来测试regex模式,这是一个非常有用的网站。我不同意:$echo-e“\nhttp://www.domain.com/owner/getinfo\nhttp://www.domain.com/owner/HR“| perl-nle'print if/^http:\/\/www.domain\.com\/owner\/(营销|获取信息)$/'$请查看我的“更新2:”并告诉我它是否正确?很可能不正确。通过使用^like,您可以断言URL必须以“Marketing”或“getinfo”开头。然后您可以说URL必须包含“Marketing”或“getinfo”其中的任何位置,对于这种特定的情况,哪种可能足够好,哪种可能不够好……你能从regex.B'中删除http和www.domain.com部分吗?因为这对所有人来说都很常见。也许你有前导或尾随的空格或斜杠?你在哪个上下文中尝试它?OP可能会以后缀
getinfo
发布到页面,这应该是不言自明的。因此,在末尾加一个
$
是个坏主意。此外,这与直接从浏览器发送的值相匹配,我们不必担心空白,服务器将忽略它。请查看我的“更新2:”并让我知道它是否正确?您必须删除表示行开头的
^
,您可以在此处测试正则表达式:并将您希望正则表达式与之匹配的字符串放在底部,如果正则表达式与字符串匹配,它将高亮显示
/http:\/\/www\.domain\.com\/owner\/(Marketing|getinfo)/