Regex 如何从正则表达式匹配中排除某些url

Regex 如何从正则表达式匹配中排除某些url,regex,google-analytics,analytics,nsregularexpression,Regex,Google Analytics,Analytics,Nsregularexpression,我有3种付款方式(在线、离线、按余额付款),每种付款方式都有不同的url,因此我使用regex来匹配所有这些url: 1-订单/结帐/未付款/完成 2-订单/结帐/付款/完成?权限=00000000000000000000000039067905&状态=OK 3-订单/结帐/付款/完成?状态=正常 正则表达式:(.*)完成 这个正则表达式匹配所有URL,但问题是它也匹配某些页面!kile此产品页面: /tork-完成r-motahari-德黑兰 解决办法是什么 您可以使用 (.*)done($|

我有3种付款方式(在线、离线、按余额付款),每种付款方式都有不同的url,因此我使用regex来匹配所有这些url:

1-订单/结帐/未付款/完成

2-订单/结帐/付款/完成?权限=00000000000000000000000039067905&状态=OK 3-订单/结帐/付款/完成?状态=正常

正则表达式:(.*)完成

这个正则表达式匹配所有URL,但问题是它也匹配某些页面!kile此产品页面:

/tork-完成r-motahari-德黑兰

解决办法是什么

您可以使用

(.*)done($|[?])
关键是您需要在字符串末尾或最后一个
处匹配
done
。图案会匹配的

  • (.*)
    -在后续子模式的最后一次出现之前,尽可能多的任何0+个字符
  • done
    -文字子字符串
    done
  • ($|[?])
    -要么是
    $
    (字符串结束锚点)要么是一个文本
    (可以在模式中写为
    \?
    ,主要的一点是前面没有括号的
    意味着
    左侧原子的1或0次重复)

请注意,您可以通过在
之后添加
?:
如果不使用捕获组值)将组变为非捕获。

看起来您只想在字符串末尾或
之前进行匹配。请尝试
(*)完成($|[?])
。不确定您是否需要第一个捕获组。完全正确。它的作品再次感谢您,请提交您的答案:)