【问题标题】:RegEx- How to make a blank space between a non-alphabetic char and an alphabetic char in a stringRegEx-如何在字符串中的非字母字符和字母字符之间创建空格
【发布时间】:2013-03-01 23:32:19
【问题描述】:

我想规范化文本字符串;出于这个原因,我想保留标点符号和非字母字符(不是为了检测表情符号),但同时在每两个字母和非字母字符之间留一个空格。例如以下字符串:

"*I love u*"
"Hi, life is great:)hehe"
"I will go uni.cul"

应转换为:

"* I love u *"
"Hi , life is great :) hehe"
"I will go to uni . cul"

你能告诉我如何写一个正则表达式来做到这一点吗?提前致谢。

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您可以替换此表达式的匹配项:

    (?<=[^\w\s])(?=\w)|(?<=\w)(?=[^\w\s])
    

    有一个空格

    例如:

    re.sub(r'(?<=[^\w\s])(?=\w)|(?<=\w)(?=[^\w\s])', ' ', str)
    

    【讨论】:

    • @user823743,更新了答案。您必须引用表达式。
    【解决方案2】:

    试试这个:

    x = '''*I love u*
        Hi, life is great:)hehe
        I will go uni.cul'''
    
    def rep(matchobj):
        return ' ' + matchobj.group(0) + ' '
    
    print re.sub('[^a-zA-Z0-9\s]+', rep, x).strip()
    

    【讨论】:

    • 请注意,这也会在不需要的地方添加空格。就像在空间周围,在刺痛的开始/结束时。
    • 很好,我更新了我的答案以纠正这个问题。你的答案更清晰。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2016-11-24
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多