我正在尝试使用正则表达式匹配要删除的字符来从文本中删除反斜杠和连字符。
SPL_CHAR2 = r"[,(.;)@\#?\|!-+_*=~<>/&$]+"
def remove_special_chars(text: str) -> str:
text = re.sub(SPL_CHAR2, ' ', text)
return text
问题在于这些字符没有被删除。
答案 0 :(得分:0)
这些字符在正则表达式定义中具有特殊含义。为此,请重新排列字符集,如下所示:
def impl(c: blackbox.Context)(x: c.Expr[String]): c.Expr[String] = {
import c.universe._
println(s"input: ${showRaw(x.tree)}")
try {
val x1 = c.Expr[String](c.untypecheck(x.tree.duplicate))
val x2 = c.eval(x1)
println(s"compile-time value is: $x2")
c.Expr[String](q"$x2")
} catch {
case ex: Throwable =>
println(ex.getMessage)
x
}
}
我已将破折号移到开头(这样就不再定义字符范围),并且反斜线已加倍。
您可以将破折号保留在原处,而不必在其前面移动破折号。
语法在这里定义:https://docs.python.org/2/library/re.html#regular-expression-syntax(搜索SPL_CHAR2 = r"[-,(.;)@\#?\\|!+_*=~<>/&$]+"
)。