我有一堆帶有空格的 Markdown 鏈接,我需要將空格替換為 . 到目前為止,我已經破解了一些解決方案,但沒有一個在 VSCode 中有效,或者完全符合我的要求。
這是我需要的 URL 格式轉換:
[My link](../../_resources/my resource.jpg)
[My link](../../_resources/my resource.jpg)
\s (?=[^(\)]*\)) 將適用于括號內的任何空白 - 但會產生誤報,因為它適用于任何帶括號的內容。
(?:\]\(|(?!^)\G)[^]\s]*\K\h 完成這項作業,但我在 VSCode 中收到一些“無效的轉義字符”訊息,因此我認為該語言不兼容。
我一直在嘗試確定字符上的鏈接,](但由于我對正則運算式比較陌生,所以有點掙扎。
我嘗試使用這個正則運算式:(?<=\]\()s\ 因為它(?<=\]\(). 正確識別了 url,但它不起作用。
我哪里出錯了?提前致謝!
編輯:檔案中的 VSCode 查找不支持可變長度后視,即使在打開的檔案中查找/替換確實支持這一點。在我開始撰寫腳本之前打開任何其他解決方案!
uj5u.com熱心網友回復:
VSCode 正則運算式不支持\K, \G, 或\h,但它支持具有非固定寬度的Lookbehinds 。因此,您可以使用以下內容:
(?<=\]\([^\]\r\n]*)[^\S\r\n]

詳情:
(?<=\]\([^\]]*)- 一個正面的lookbehind,匹配緊接在前面的位置,](然后是除以下之外的任何零個或多個字符]\s- 任何一個或多個空白字符(Visual Studio Code 中的換行符除外,如果沒有\n或\r在正則運算式中,\s則與換行符不匹配)(?=[^()]*\))-正超前相匹配的后面緊接著比其他零個或多個字符的位置(和)然后將)炭。
由于您在 Find/Replace in Files 中使用它,因此此后視解決方案將不起作用。
您可以將 Notepad 與
(\G(?!\A)|\[[^][]*]\()([^()\s]*)\s (?=[^()]*\))
和$1$2 更換模式。在記事本 ,按CTRL SHIFT F和填寫必要的欄位之后,命中Replace in Files。
查看示例設定:

uj5u.com熱心網友回復:
最后,由于我在 Mac 上并且不想啟動虛擬 PC 來運行 Notepad (Sublime 使用相同的引擎并且 Atom 不允許您排除檔案),我使用了 Python 腳本的組合使用@Wiktor Striizew 對由于任何原因沒有被模式拾取的單個檔案的回答。
md_url_pattern = r'(\[(. )\])\(([^\)] )\)'
def remove_spacing(match_obj):
if match_obj.group(3) is not None:
print("Match Object: " match_obj.group(1) "(" re.sub(r"\s ", " ", match_obj.group(3)) ")")
return match_obj.group(1) "(" re.sub(r"\s ", " ", match_obj.group(3)) ")"
# THIS_FOLDER = os.path.dirname(os.path.abspath(__file__))
this_folder = '<my_document_folder>' # fixed folder path
note_path = '<note_folder>' # change this
full_path = os.path.join(this_folder, note_path)
directory = os.listdir(full_path)
os.chdir(full_path)
for file in directory:
open_file = open(file, 'r')
read_file = open_file.read()
read_file = re.sub(md_url_pattern, remove_spacing, read_file)
if not read_file:
print("Empty file!")
else:
write_file = open(file,'w')
write_file.write(read_file)
這個腳本可以做一些整理和除錯(奇怪的空檔案和沒有子檔案夾兼容性),但它是我能做的最好的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/349285.html
上一篇:VSC與PyCharm自動完成選項卡:它可以填充函式、括號并退出該行嗎?
下一篇:如何使用VSCode匯入提取?
