正则表达式在字符串之后或行尾之前匹配

时间:2018-10-01 17:37:02

标签: regex

我想在“ jsession”之后或行尾之前进行比赛。 我写了一些部分有用的东西,但是如果匹配项在行尾,则不起作用。

Ex1:

  • /uims/portal/IDV_CAM10_AUTHENTICATION;jsessionid=0000OYmR64-Ta621IoBwHtBKJHu:14ak8djk8?__trats=&__arxasnkucl=b8eb142325f2478896d7ccf53d072646579e99e0db0cec837ee5826bc3f922e8&__dne=

Ex2:

  • /uims/portal/IDV_CAM10_AUTHENTICATION;jsessionid=0000OYmR64-Ta621IoBwHtBKJHu:14ak8djk8#__trats=&__arxasnkucl=b8eb142325f2478896d7ccf53d072646579e99e0db0cec837ee5826bc3f922e8&__dne=

Ex3:

  • /uims/portal/IDV_CAM10_AUTHENTICATION;jsessionid=0000OYmR64-Ta621IoBwHtBKJHu:14ak8djk8

正则表达式:(?<=jsessionid=).*(?=\?|#) 适用于1&2,但不适用于3。

请参阅 https://regexr.com/40f35

1 个答案:

答案 0 :(得分:2)

我想这就是你想要的:

jsessionid=([^#?]+)

将从jessionid=#?或字符串结尾(以先到者为准)进行匹配。它使用否定字符类,即[^stuff]。非常便利。这是一个演示:

https://regex101.com/r/m4WZN4/1