我正在嘗試將markdown文本中的文本鏈接(有FQDN,即沒有相對鏈接)轉換為Markdown鏈接。除了當源markdown已經將文本轉換為鏈接時,它的作業是正常的。例如,這是源文本:
Login in to My site [https: //example. com/](https://example.com/),并選擇東西>進一步選擇以下細節。。
(https://example.com/abc/1.html)
另外看一下https://example.com/abc/1.html。
我的詞條。/(?<!]()((https?|ftp)://[-A-Z0-9 &@#/%?=~_|!,.;]*[-A-Z0-9 &@#/%=~_|)/gim.
預期:只匹配第二個和第三個鏈接。目前的結果是:匹配3個URL。
我試著在結尾處添加一個負數的lookahead,類似于開頭的負數lookbehind,但是這只是省略了URL的最后一個字符,這真是太糟糕了!
我正在使用這個方法,因為它是一個非常重要的工具。我在 NodeJS 中使用這個方法。
的鏈接。地點:
(?<!]()- Lookbehind斷言以確保這不是[x](y)中的y。
(- 捕獲URL部分(?:https?|ftp)://- 匹配URL的http/ftp部分 。
[^s])]*- 匹配URL的其余部分。
)- 捕捉URL的結尾(?:- 非抓取組[s])]- 匹配空格字符、收尾括號或收尾小括號。我們需要匹配收尾括號/小括號的原因是允許格式的URL,例如:(Check https://google.com)或[Check https://google.com]。
(?!()- Lookahead斷言,以確保這不是[x](y)中的x。|- Or$- 字串的結束 。
)- 非抓取組的結束
uj5u.com熱心網友回復:
你可以使用一個模式來匹配你不想要的東西,并在第一組中捕獲你想要的東西。
你可以在替換中利用replace的回呼函式。
你可以檢查id組1是否存在。如果它存在,就用你的自定義替換。如果它不存在,就用完整的匹配來替換
你可以檢查id組1是否存在。
[(?:https?|ftp)://[^][] ]([^()]*)|((?:https?|ftp):/S )
在部分地區,模式匹配:
[匹配[(?:https?|ftp)://匹配其中一個協議和://[^][]匹配1次以上的任何字符,除了[和]。
]匹配]([^()]*)匹配從(到)。
|或者((?:https?|ftp)://S )在組1中捕獲類似url的格式 。
為了不匹配url中的括號:
[(?:https?|ftp)://[^][] ]([^()]*)|((?:https?|ftp)://[^()s] )
或者專門在小括號之間捕獲一個url:
[(?:https?|ftp)://[^][] ]([^()]*)|((?:https?|ftp):/S )|((?:https?|ftp)://[^()s] )
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/334230.html
標籤:
下一篇:型別腳本--迭代中的訂閱

