C#-使用正则表达式匹配url中的几个特定单词
我尝试制作一个只保存URL的工具,如下所示: 页码?id?id=1'C#-使用正则表达式匹配url中的几个特定单词,c#,C#,我尝试制作一个只保存URL的工具,如下所示: 页码?id?id=1' http://mechanikrolniczy.cba.pl/viewtopic.php?p=16176' http://all-tubes-jenna-haze.mzs-dgd.ru/index.php?route=product&product_id=9108429' https://websetnet.net/page/40/?q=%2Fbs%2Fpage%2F40%2F&loginid=117cee5a
http://mechanikrolniczy.cba.pl/viewtopic.php?p=16176'
http://all-tubes-jenna-haze.mzs-dgd.ru/index.php?route=product&product_id=9108429'
https://websetnet.net/page/40/?q=%2Fbs%2Fpage%2F40%2F&loginid=117cee5a78'
在第一个URL中,您可以看到:.php?p=16176'和第二个URL产品_id=9108429'
在每个URL中,它可能是不同的
所以我想用正则表达式只查找以?something=numberORwords'开头的单词
我必须确保它以'
在过去的两个小时里,我一直在尝试,但由于某些原因,我无法做到。。。我甚至想出了这样的主意:
^&/]\Wpage_id\W[=0-9]+|\W?item_id\W[=0-9]+|\W?p\W[=0-9]+\Wview\W[=0-9]+\Wno\W[=0-9]+|\Wimage_id\W[=0-9]+|\Wv\W[=0-9]+|\Wsequence\W[=0-9]+|\Wid\W[=0-9]+|\Wstart\W[=0-9]+[']
我的代码:
string pattern = @"([?][\w]+[=][\w]+)[']";
foreach(string s in urls)
{
Match m = Regex.Match(s, pattern);
if (m.Success)
{
Valid.Add(s);
Console.WriteLine(s);
}
}
编辑:
我试图做的是查看一个网站是否在参数后面有“at”,它可能会受到SQL注入的攻击。此模式涵盖了上述示例中存在的所有情况
([?][\w]+[=][\w]+)?([&][\w]+[=][\w]+)*[']
我们正在寻找以下条件:
(第一个捕获组)?someWord=numbersOrletters
(第二个捕获组)&someWord=numbersOrletters
- 以
字符结尾(final子句)“
$
,以确保'
位于字符串的最末端
我用它来构建和测试这些东西,这是一个非常有用的工具
编辑:此模式捕获您发布的第二个URL中的子字符串
route=product
。如果要避免这种情况,请将模式更改为搜索数字字符串\d
,而不是单词\w
(单词也可以包含数字,但数字不能包含字母字符).考虑使用框架库例程:哦,好的:)但如何使用正则表达式呢?这是一个可靠的答案,应该被选为正确答案。哦,我使用了regex101,由于某种原因,我现在无法获取任何URL,我将编辑问题并显示我的代码似乎你没有在代码中包含整个表达式,而且你添加的最后一个url没有以“
字符结尾,如果你想使该条件成为可选条件,请添加一个?我把整个问题搞砸了,我试图做的是检查网站是否有“在参数之后,它可能会受到SQL注入的攻击,但我认为我需要发送web请求或其他东西,而不是检查文本文件中的URL。这不是发布关于如何针对SQL注入服务器的建议的合适网站。