我有 3 种付款类型(在线、离线、按余额),每种付款类型都有不同的网址,因此我使用正则表达式来匹配所有此网址:
1- 订单/结帐/未付款/已完成
2- 订单/结帐/已付款/完成?Authority=000000000000000000000000000039067905&Status=OK 3- 订单/结帐/已付款/完成?Status=OK
正则表达式:(.*?)完成
这个正则表达式匹配所有网址,但问题是它也匹配某些页面!删除此产品页面:
/tork-完成r-motahari-德黑兰
解决办法是什么?
最佳答案
您可以使用
(.*)done($|[?])
重点是你需要匹配字符串末尾或最后一个?
处的done
。模式将匹配
(.*)
- 任何 0+ 个字符,尽可能多,直到后续子模式最后一次出现done
- 文字子字符串done
($|[?])
-$
(字符串 anchor 结尾)或文字?
(可以写为\?
在模式中,要点是?
不带括号或前面的\
表示原子重复 1 次或 0 次位于?
的左侧)。
请注意,如果您不使用捕获组值,则可以通过在 (
后添加 ?:
将组变为非捕获组。
关于regex - 如何从正则表达式匹配中排除某些网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44780839/