亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用于匹配基本路徑的正則表達式

用于匹配基本路徑的正則表達式

C#
月關寶盒 2022-08-20 16:52:06
我試圖拿出一個正則表達式來匹配某個基本路徑。規則應該是匹配基本路徑本身加上“/”或“.”以及路徑的其余部分。例如,給定 /api/ping,以下內容應匹配/api/ping.json /api/ping /api/ping/xxx/sss.json /api/ping.xml這應該不匹配/api/pingpong /api/ping_pong /api/ping-pong我嘗試使用以下正則表達式:/api/ping[[\.|\/].*]?但它似乎沒有抓住這個案例。/api/ping這是正則表達式風暴測試器的鏈接--更新:感謝答案,現在我有了這個版本,可以更好地反映我的推理:\/api\/ping(?:$|[.\/?]\S*)表達式要么在 ping(即該部分)之后結束,要么以 一個 繼續,要么后跟任何非空格字符$./?這是正則表達式
查看完整描述

2 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

您可以使用此正則表達式,它使用交替來確?;韭窂胶蟾蚧蛐形?code>./$

\/api\/ping(?=\.|\/|$)\S*

解釋:

  • \/api\/ping- 按字面意思匹配文本/api/ping

  • (?=\.|\/|$)- 向前看,確保下面的內容是文字點或斜杠或行尾./$

  • \S*- 可選擇跟隨路徑后面的任何非空格字符

演示

在正則表達式中,字符集的使用是不正確的,您不需要轉義點,并且在字符集中不需要交替,并且不能通過放置在字符類中來完成,并且由于字符類看起來嵌套,因此它不是必需的,也不是正確的做法。我猜你想讓你的正則表達式像這樣,/api/ping[[\.|\/].*]?[].||

\/api\/ping([.\/].*)?$

使用更正的正則表達式進行演示

請注意,一旦您放入任何內容,那么它只被計為一個字符,允許字符集中包含的所有內容,因此它允許點或斜杠,并注意您需要轉義為[].//\/


查看完整回答
反對 回復 2022-08-20
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

您的模式使用一個字符類,該字符類將與列出的任何字符類匹配,也可以將其編寫為 .[[./|]

它不匹配,因為字符類必須至少匹配 1 次,因為它不是可選的。/api/ping

您可以使用交替來匹配,然后斷言字符串的結尾,或者通過重復 0 次或更多次匹配正斜杠,然后不是正斜杠,然后是點和 1+ 次,然后是點和擴展來匹配結構。/api/ping|

/api/ping(?:(?:/[^/\s]+)*\.\S+|$)

這將匹配

  • /api/ping按字面意思匹配

  • (?:非捕獲組

    • (?:/[^/\s]+)*重復分組結構 0+ 次匹配,然后 1+ 次不匹配或空白字符//

    • \.\S+匹配一個點和 1 倍以上的非空格字符

    • |

    • $斷言字符串的結尾

  • )關閉非捕獲組

查看正則表達式演示|C# 演示


查看完整回答
反對 回復 2022-08-20
  • 2 回答
  • 0 關注
  • 288 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號