我想将\W破折号异常(exception)的所有-而不是字母替换为空格,即:

  • black-white将给出black-white
  • black#white将给出black white

  • 我对正则表达式非常了解,但我不知道如何处理。

    考虑到我要使用Unicode,因此[a-zA-Z]并非仅英语中的\w
    考虑到我更喜欢Python re语法,但可以阅读其他建议。

    最佳答案

    使用否定的字符类:( \W等于[^\w][^-\w] => \W-除外)

    >>> re.sub(r'[^-\w]', ' ', 'black-white')
    'black-white'
    >>> re.sub(r'[^-\w]', ' ', 'black#white')
    'black white'
    

    如果您使用 regex 软件包,则可以使用nested sets, set operations:
    >>> import regex
    >>> print regex.sub(r'(?V1)[\W--[-]]', ' ', 'black-white')
    black-white
    >>> print regex.sub(r'(?V1)[\W--[-]]', ' ', 'black#white')
    black white
    

    关于python - 如何用正则表达式替换 '-'(破折号)以外的所有\WITH(九个字母)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27588522/

    10-11 22:03