用python和regex替换sql中的表名

时间:2018-05-14 19:36:34

标签: python regex

我需要更新一些sql查询以指向一组新表。我很难找到结尾这个词,即表名的结尾,用python' s。空白字符和表名称的结尾可以是换行符或空格。该脚本未找到regex.sub()方法的匹配项。我尝试过使用" \ s"而不是" \ b"。这确实找到了表名,但是当我替换字符串时,我正在丢失原始的空格字符。我究竟做错了什么?

var Places = ["place1", "place2", "place3"];
function redirectRandomly() {
  let myPlace = Places[Math.random() * (Places.length)];
  window.location.href = "http://ide50-w.cs50.io:8080/" + myPlace;
}

1 个答案:

答案 0 :(得分:1)

Python字符串文字使用反斜杠作为转义字符。字符串文字"\b"将包含退格符(ASCII 0x8),就像"\n"将包含换行符一样。它不会包含"反斜杠b",正如您需要正则表达式一样。

获得"反斜杠b"您需要转义字符串文字中的反斜杠,或使用原始字符串,分别为"\\b"r"\b"

regex = re.compile(old_name + r"\b", re.IGNORECASE)

通常,原始字符串在Python中用于正则表达式,因此您不需要将每个反斜杠加倍。

阅读https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals

旁注:"\s"有效,因为 - 与"\b""\n"相比 - 它在Python字符串文字中没有任何特殊之处,因此它实际上变为"反斜杠s&# 34;为正则表达式。