2010-06-19 50 views
0

给予代码:如何更换空白

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但它不工作,我做了什么错?

+0

对不起康拉德鲁道夫,我想我们同时编辑hehe **回滚** – 2010-06-19 16:20:35

+0

@Koning:堆栈溢出应该可以分发锁并发编辑,以防止丢失的更新...哦。 – 2010-06-19 16:22:45

回答

1

[^a-z\s]带有忽略大小写标志设置匹配字母和空白字符以外的任何其他字符。 ^在角色类的开头([]之间的东西)否定角色类。

要更换空白,你可以简单地用空字符串替换\s+或者,如果你需要匹配只能是字母与空刺更换

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

。第二个正则表达式将匹配两个字母之间的空白字符串;以考虑串的开始/结束,使用

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

\b\s+\b 

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