[英]Replace all hyphens except in between two digits
您可以使用
import re
p = re.compile(r'(?!(?<=\d)-\d)-')
test_str = "12345-4567 hello-you 45-year N-45"
print(re.sub(p, " ", test_str))
# => 12345-4567 hello you 45 year N 45
(?!(?<=\\d)-\\d)-
正則表達式匹配
(?!(?<=\\d)-\\d)
- 字符串中沒有緊跟-
(緊跟在一個數字之前)后跟一個數字的位置-
- 一個連字符。 另一種方法是像字符串一樣匹配和捕獲郵政編碼以保留和替換它們-
在所有其他上下文中:
re.sub(r'\b(\d{5}-\d{4})\b|-', r'\1 ', text)
注意\\b(\\d{5}-\\d{4})\\b
匹配單詞邊界位置並將其捕獲到組 1 中,然后匹配任意五位數字、連字符、四位數字和單詞邊界。 替換模式中的\\1
反向引用指的是在組 1 中捕獲的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.