我為 nginx 制作了一個正則運算式,我想在沒有?. 它只能匹配包含?. 它必須將結果分成 2 組。
我的正則運算式是:^(.*)\?(.*)$
它幾乎可以作業,但它抓住了破壞某些東西的尾部斜線。

如您所見,尾隨/在捕獲組內。所以我想匹配?或/?在非捕獲組中,這取決于那里的內容,但它不能按預期作業:
更新的正則運算式:^(.*)(?:\/\?|\?)(.*)$
這將始終只匹配?我猜,因為它首先尋找較小的匹配。
我無法完全概念化在單個正則運算式中從捕獲組中洗掉訓練斜線的正確方法。
uj5u.com熱心網友回復:
您可以使用
^(.*[^\/])?\/?\?(.*)$
^(.*?)\/?\?(.*)$
請參閱正則運算式演示 #1 /正則運算式演示 #2。
詳情:
^(.*[^\/])?\/?\?(.*)$圖案的意思是:
^- 字串的開始(.*[^\/])?- 可選的第 1 組:盡可能多的除換行符以外的任何零個或多個字符,然后是除 a 以外的字符/\/?- 一個可選/字符\?- 一個?字符(.*)- 第 2 組:盡可能多的除換行符以外的任何零個或多個字符$- 字串結束。
^(.*?)\/?\?(.*)$手段:
^- 字串的開始(.*?)- 第 1 組:除換行符之外的任何零個或多個字符盡可能少\/?\?(.*)$- 一個可選的/,然后是一個?字符,然后是第 2 組捕獲字串的其余部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/519970.html
標籤:正则表达式
上一篇:SEI和WSDL有什么區別
下一篇:正則運算式不允許破折號
