【问题标题】:Python regex replace string with patternPython正则表达式用模式替换字符串
【发布时间】:2017-12-18 07:32:57
【问题描述】:

正则表达式是r'[A-z\d,\-.\ \/\n]{1,}',这个正则表达式将允许字母数字+一些特殊字符。

我想替换不允许的字符。

我试过了,

re.sub(r'[A-z\d,\-.\ \/\n]{1,}', ' ', 'ASGHB 3 JHDSD eyg && ^&*hdbcd v%^&*B#$%^')

输出为,

' && &* % &* #$% '

我希望将原始字符串作为输出,并用空格替换特殊字符(不允许使用)。

预期输出:ASGHB 3 JHDSD eyg ^ hdbcd v ^ B ^ 如何做到这一点?

【问题讨论】:

  • re.sub(r'[^A-z\d,\-.\ \/\n]{1,}', ' ', 'ASGHB 3 JHDSD eyg && ^&*hdbcd v%^&*B#$%^') => 'ASGHB 3 JHDSD eyg ^ hdbcd v ^ B ^' ?你应该给出你预期的结果。
  • 也不要使用[A-z],除非您知道它的实际作用。
  • @Silencer 谢谢。
  • @AvinashRaj 我应该单独使用它吗?我虽然 [A-Za-z] 和 [A-z] 是一样的,如果我错了,请纠正我。
  • 你应该单独使用它。两者都不相同。查看 A-z 范围内的其他字符是什么 asciitable.com

标签: python regex python-2.7


【解决方案1】:

你可以找到所有关于 re.sub here

那么关于你的问题。你应该在你的集合之前使用 ^:

If the first character of the set is '^', all the characters that are not in the set will be matched. 
For example, [^5] will match any character except '5', and [^^] will match any character except '^'. 
^ has no special meaning if it’s not the first character in the set.

【讨论】:

    猜你喜欢
    • 2019-11-12
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2015-11-30
    • 2022-10-01
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多