我需要更新一些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;
}
答案 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;为正则表达式。