C#:我的正则表达式应该与此匹配?

时间:2016-12-21 02:07:36

标签: c# regex

我有一个网址,我想完全匹配它的结尾。

网址是[some_host] / url / action 如果网址包含" url / action"在其中我希望它能匹配。

附加规则1: 该URL可以在末尾包含更多数据,例如" [some_host] / URL /动作/ newTransaction /" - 在这种情况下,我希望正则表达式与它不匹配。

附加规则2: 但是,如果URL是" [some_host] / url / action?t = true,那么我希望正则表达式匹配。

我的正则表达式应该是什么样的?

编辑: 一些例子:

"[some_host]/url/action" -- should match. 
"[some_host]/url/action/" -- should match.
"[some_host]/url/action?t=true" -- should match 
"[some_host]/url/action/?t=true" -- should match 



 "[some_host]/url/action/[ANYTHING_ELSE]" -- should NOT match

2 个答案:

答案 0 :(得分:0)

这适用于您的情况:

(http|https):\/\/[\w_-]+(?:(?:\.[\w_-]+)+)\/url\/action(?!\/\w)[\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-]*

使用上述正则表达式中的完整匹配。

https://regex101.com/r/eGCYf6/2

答案 1 :(得分:0)

这不是正则表达式,很冗长。但是,很容易理解。

string url = "";
bool b1 = url.EndsWith("/url/action");
bool b2 = url.EndsWith("/url/action/");
bool b3 = url.EndsWith("/url/action/?t=true");
bool b4 = url.EndsWith("/url/action/?t=false");
bool match = b1 || b2 || b3 || b4;