簡體   English   中英

如何在我的場景中獲得正則表達式匹配

[英]How to get regex match on my scenario

我想匹配的URL在特定的基本URL字符串之后具有多余的字符。 基數可以是“ / home”或“ / home / accounts / {numeric_account_id}”。 我不需要捕捉任何比賽; 我只想測試是否有匹配項。

我做了一個正則表達式:

r'^/home(/accounts/\d+)?(/[A-Za-z0-9_\-]+)+/?$'

一些例子是:

  1. '/ home'=>不匹配
  2. '/ home /'=>不匹配
  3. '/ home / accounts / 123'=>不匹配
  4. '/ home / accounts / 123 /'=>不匹配
  5. '/ home / x'=>應該匹配
  6. '/ home / accounts / 123 / x'=>應該匹配

上面的正則表達式錯誤地匹配了3和4。我嘗試更改“?” 之后將帳戶分組為“ *”,但這無濟於事。 似乎最后一組貪婪地匹配情況3和4。

什么是正確的正則表達式? 謝謝

試試這個正則表達式:

^/home(?:(?!/accounts/)|/accounts/\d+)(?:/[A-Za-z0-9_\-]+)+/?$

它將匹配/home ,然后:

(?!/accounts/) :下一個不帶/accounts/的空字符串,或者

/accounts/\\d+/accounts/后跟數字。

之后,匹配路徑中允許的任何字符。

regex101演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM