如何更换空白

时间:2010-06-19 16:16:11

标签: regex string replace ironpython

鉴于代码:

import clr
clr.AddReference('System')

from System.Text.RegularExpressions import *

def ReplaceBlank(st):
    return Regex.Replace(
        st,r'[^a-z\s](\s+)[^a-z\s]',
        lambda s:s.Value.Replace(' ', ''),RegexOptions.IgnoreCase)

我希望输入ABC EDF返回ABCDEF,但它不起作用,我做错了什么?

1 个答案:

答案 0 :(得分:1)

设置了ignore-case标志的

[^a-z\s]匹配除字母和空格字符以外的任何内容。 ^在字符类的开头([]之间的东西)否定字符类。

要替换空格,您只需将\s+替换为空字符串,或者如果只需要匹配字母替换

(?<=[a-z])\s+(?=[a-z])

空洞刺痛。第二个正则表达式将匹配两个字母之间的空格字符串;要考虑字符串的开头/结尾,请使用

(?<=(^|[a-z]))\s+(?=($|[a-z]))

\b\s+\b  

第二个将匹配两个单词边界之间的空格,其中包括句点字符,如句号,逗号,连字符等。