簡體   English   中英

匹配第 n 個字符之前和之后的組

[英]Match group before nth character and after that

我想匹配第 n 個字符之前的所有內容(第一個字符除外)及其之后的所有內容。 所以對於下面的字符串

/firstname/lastname/some/cool/name

我要搭配

Group 1: firstname/lastname
Group 2: some/cool/name

使用以下正則表達式,我快到了,但我找不到正確的正則表達式來正確匹配第一組並忽略第一個 /:

([^\/]*\/){3}([^.]*)

請注意,我總是想匹配第三個正斜杠。 之后的所有字符都可以是 URL 中有效的任何字符。

您的正則表達式組沒有給出正確的結果,因為([^\\/]*\\/){3}您正在重復捕獲的組,這將覆蓋先前匹配的組Read this

您可以使用

^.([^/]+\/[^/]+)\/(.*)$

在此處輸入圖片說明

 let str = `/firstname/lastname/some/cool/name` let op = str.match(/^.([^/]+\\/[^/]+)\\/(.*)$/) console.log(op)

量詞{3}重復捕獲組 3 次,這將具有最后一次迭代的值。

第一次迭代將匹配/ ,第二個firstname/和第三個(最后一次迭代) lastname/這將是組的值。

第二組捕獲匹配[^.]* ,它將匹配 0+ 而不是不考慮數據結構的文字點。

如果要匹配完整模式,可以使用:

^\/([^\/]+\/[^\/]+)\/([^\/]+(?:\/[^\/]+)+)$

解釋

  • ^字符串開始
  • (捕獲組 1
  • )關閉群組
  • \\/匹配/
  • (捕獲組 2
    • [^\\/]+匹配 1+ 次而不是/
    • (?:\\/[^\\/]+)+重復 1+ 次匹配/和 1+ 次不匹配/以匹配字符串其余部分的模式。
  • )關閉群組
  • $字符串結尾

正則表達式演示

忽略第一個/ ,然后捕獲前兩個單詞,然后捕獲/之后的其余短語。

^(:?\/)([^\/]+\/[^\/]+)\/(.+)

查看示例

暫無
暫無

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

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