[英]Replace all Non-Alphanumeric Characters except one particular pattern using RegEx in Python
假設,我有一些像
text = "xyz - aabc 123.56 癌症 s15.2 日期 12/03/2021 @ dd 醫院 www.someurl ocr.5rror 123.sometext"
現在,我想創建一個正則表達式,它將用空格替換任何非字母數字字符,除了被數字包圍的點(.),最終文本應該是這樣的
“xyz aabc 123.56 癌症 s15.2 日期 12 03 2021 dd 醫院 www someurl ocr 5rror 123 sometext”
我有這個正則表達式可以找到這些匹配項re.findall(r"(\\b[a-z0-9] \\d.\\d[a-z0-9] \\b)", text)給我['123.56' , 's15.2'] ,但我無法獲得上述文本。
提前致謝。
您可以使用 re.sub 和帶有捕獲組的模式
(\d+(?:\.\d+))|\W+
模式匹配:
(\\d+(?:\\.\\d+))
捕獲帶有可選小數部分和組 1 中的點的數字|
要么\\W+
匹配 1+ 個非單詞字符以替換為單個空格(或使用否定字符類[^a-zA-Z0-9]+
保持匹配下划線)在替換中保留捕獲組,並將 1+ 非單詞字符的匹配替換為空格。
import re
s = "xyz - aabc 123.56 cancer s15.2 date 12/03/2021 @ dd hospital www.someurl ocr.5rror 123.sometext"
pattern = r"(\d+(?:\.\d+))|\W+"
print(re.sub(pattern, lambda x: x.group(1) if x.group(1) else " ", s))
輸出
xyz aabc 123.56 cancer s15.2 date 12 03 2021 dd hospital www someurl ocr 5rror 123 sometext
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.