我试图在fiddler中创建一个正则表达式作为规则使用。我不太擅长正则表达式。
这个正则表达式:
http://myServer:28020/MyService/ItemWebService.json?([a-zA-Z]+)
匹配以下网址:
http://myServer:28020/MyService/ItemWebService.json?action=keywordSearch&username=StockOnHandPortlet&sessionId=2H7Rr9kCWPgIZfrxQiDHKp0&keywords=blue&itemStatus=A
到目前为止一切顺利。但是为什么当我尝试这个正则表达式时:
http://myServer:28020/MyService/ItemWebService.json?action=keywordSearch([a-zA-Z]+)
与上述网址不符。为什么会这样?
答案 0 :(得分:5)
在正则表达式中,您需要在字符类之外转义.
和?
。
所以,这足以匹配URL本身:
http://myServer:28020/MyService/ItemWebService\.json
带有查询字符串的URL可以与
匹配http://myServer:28020/MyService/ItemWebService\.json\??(?:&?[^=&]*=[^=&]*)*
请参阅demo
<强>解释强>:
http://myServer:28020/MyService/ItemWebService\.json
- 匹配我们需要转义的基本网址.
以便按字面匹配\??
- 匹配0或1(由于?
量词)文字?
(?:&?[^=&]*=[^=&]*)*
- 匹配*
的0个或更多(由于&?[^=&]*=[^=&]*
)序列:
&?
- 0或1 &
(无需转义)[^=&]*
- 除=
和&
=
- n等于符号[^=&]*
- 除=
和&
如果要匹配第一个查询参数=值设置为action=keywordSearch
的网址,可以使用following regex:
http://myServer:28020/MyService/ItemWebService\.json\?action=keywordSearch(?:&?[^=&]*=[^=&]*)*
答案 1 :(得分:0)
使用
(\?|\&)([^=]+)\=([^&]+)
使用g选项(全局)
http://myServer:28020/MyService/ItemWebService.json(\?|\&)([^=]+)\=([^&]+)