如何从正则表达式匹配中排除一些 url
how to exclude some url from a regex match
我有 3 种付款方式(在线、离线、余额),每种付款方式都有不同的 url 所以我使用正则表达式来匹配所有这些 url :
1- order/checkout/unpaid/done
2- order/checkout/paid/done?Authority=000000000000000000000000000039067905&Status=OK
3- order/checkout/paid/done?Status=OK
正则表达式:(.*?)完成
这个正则表达式匹配所有 url,但问题是它也匹配某些页面!关闭此产品页面:
/tork-完成r-motahari-德黑兰
有什么解决办法?
您可以使用
(.*)done($|[?])
关键是你需要匹配字符串末尾的done
或者最后的?
。该模式将匹配
(.*)
- 任何 0+ 个字符,尽可能多,直到最后一次出现后续子模式
done
- 文字子串 done
($|[?])
- $
(字符串锚点结尾)或文字 ?
(在模式中可以写成 \?
,要点是?
前面没有括号或 \
表示 ?
).[=36= 左侧的原子重复 1 次或 0 次]
请注意,如果您不使用捕获组值,则可以通过在 (
之后添加 ?:
将组变为非捕获组。
我有 3 种付款方式(在线、离线、余额),每种付款方式都有不同的 url 所以我使用正则表达式来匹配所有这些 url :
1- order/checkout/unpaid/done
2- order/checkout/paid/done?Authority=000000000000000000000000000039067905&Status=OK 3- order/checkout/paid/done?Status=OK
正则表达式:(.*?)完成
这个正则表达式匹配所有 url,但问题是它也匹配某些页面!关闭此产品页面:
/tork-完成r-motahari-德黑兰
有什么解决办法?
您可以使用
(.*)done($|[?])
关键是你需要匹配字符串末尾的done
或者最后的?
。该模式将匹配
(.*)
- 任何 0+ 个字符,尽可能多,直到最后一次出现后续子模式done
- 文字子串done
($|[?])
-$
(字符串锚点结尾)或文字?
(在模式中可以写成\?
,要点是?
前面没有括号或\
表示?
).[=36= 左侧的原子重复 1 次或 0 次]
请注意,如果您不使用捕获组值,则可以通过在 (
之后添加 ?:
将组变为非捕获组。