在包含 Python 和 re.sub 的捕获组的原始字符串中转义反斜杠

escape backslash in raw string which contains a capture group in Python with re.sub

我想编写一个函数,用 LaTeX 命令替换 IP 地址到 link 终端的 IP 地址以进行 ssh 连接。如果在替换字符串的开头没有这个反斜杠,它就会起作用。我尝试了以下方法:

import re

def link_ips(content: str) -> str:
  ip_regex = r'((?:[0-9]{1,3}\.){3}[0-9]{1,3})'
  return re.sub(ip_regex, r'\href{ssh://}{} ', content)

print(link_ips('192.168.178.1'))

我得到了错误

re.error: bad escape \h at position 0

我预计 \href{ssh://192.168.178.1}{192.168.178.1}

我尝试了不同的转义组合方式,但无法修复。您知道如何解决它吗?

试试这个:

import re

def link_ips(content: str) -> str:
    ip_regex = r'((?:[0-9]{1,3}\.){3}[0-9]{1,3})'
    return re.sub(ip_regex, r'\href{ssh://}{} ', content)

print(link_ips('192.168.178.1'))

在编程语言中,反斜杠用于转义 \t\n 等特殊字符,因此如果您确实需要在字符串中使用真正的反斜杠,您也必须转义该反斜杠