我知道如何使用正则表达式在编辑程序中执行批量搜索和替换任务,但我没有或找不到零宽度空格 unicode 的完整列表。我快速搜索了谷歌,发现 U+200B 是 ZWS,但肯定还有很多其他的。我试图找到在线工具来完成这项工作,但没有成功。他们提供字数统计、删除所有空格或文档比较工具,但没有 ZWS 检测器或删除器。
这些字符不被视为空格,尽管它们看起来像是。它们是特殊字符,如 %、* 或 #,但却是不可见的。
有什么帮助吗?
答案1
答案2
为了匹配所有*零宽度空白字符,您应该匹配“格式”类别统一码。
\p{Cf}
查看测试:https://regex101.com/r/AS2wLz/1
* 我说的“全部”是指在“具有 White_Space=no 属性的相关 Unicode 字符”表中列出的所有字符维基百科文章“空白字符”以及其他包括在类别中Cf
。
答案3
在 Python 中,你可以使用以下命令删除 ZWSP:
(r"\u200b", "", re.MULTILINE),
请参阅下面的代码,还有其他替代品
# Directory-ul în care vrei să aplici căutarea și înlocuirea cu regex
directory = "c:\\Folder-Oana\\extracted\\translated"
# Lista cu regex-urile și înlocuirile corespunzătoare
regex_and_replace = [
(r"\\\\.*$", "", 0),
(r"\\.*\\$", "", 0),
(r"\\.*$", "", 0),
(r"\\\\.*$", "", re.MULTILINE),
(r"\\.*\\$", "", re.MULTILINE),
(r"\\.*$", "", re.MULTILINE),
(r"\u200b", "", re.MULTILINE),
(r'<p><link rel="canonical"', '<link rel="canonical"', 0),
(r'<p><p class=', '<p class=', 0),
(r"<p></p>", "", 0),
# Adaugă alte regex-uri și înlocuiri aici
]
# Parcurge toate fișierele din director
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
# Verifică dacă este un fișier și obține conținutul
if os.path.isfile(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
file_content = file.read() # Define 'file_content' for each file
# Aplică fiecare regex și înlocuire în listă
for regex, replace, flags in regex_and_replace:
file_content = re.sub(regex, replace, file_content, flags=flags)
# Scrie conținutul actualizat înapoi în fișier
with open(file_path, 'w', encoding='utf-8') as file:
file.write(file_content)
print(f"Procesat fișierul: {filename}")
# Call the function to delete duplicate files
delete_duplicate_files(directory)