示例文本=
legacycard.ashx?save=false&iNo=3&No=555
样本图案=
^legacycard.ashx(.*)No=(d+)
想要获取组#2的值"555"(示例文本中的值"No=")
在Expresso中,这可以工作,但是在ASP中。. NET UrlRewrite,它不能捕获。
我错过了什么吗?
谢谢!
我会这样做:
^legacycard.ashx?(?:.+&)*No=(d+)
?
将转义通常分隔URL和参数的问号,然后您确保它将在您实际关心的参数之前捕获每个参数键/值对(任何以&
结束的内容)。使用?:
可以让您指定一组括号是非捕获的(我假设您不需要任何数据,有可能略微加快正则表达式的速度),并且只捕获555
。这种方法的额外好处是,无论参数顺序如何,它都可以工作。
使用这个正则表达式:
^legacycard.ashx?save=(false|true)&iNo=(?<ino>d+)&No=(?<no>d+)
然后用
替换${no}
看起来很好,你的正则表达式应该匹配整个字符串
legacycard.ashx ?拯救= false&伊诺= 3,没有= 555
不知道为什么要有组,但是组也应该返回
?拯救= false&伊诺= 3,
和
555年
为更好的措施,你应该知道。在legacycard.ashx
也被regex解释,你通常会转义它,在这种情况下,这并不重要,因为一个点匹配一切,也是一个点。:)
试试这个
^legacycard.ashx(?No=|.*?&No=)(d+)