鉴于代码:
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 :(得分:1)
[^a-z\s]
匹配除字母和空格字符以外的任何内容。 ^
在字符类的开头([]
之间的东西)否定字符类。
要替换空格,您只需将\s+
替换为空字符串,或者如果只需要匹配字母替换
(?<=[a-z])\s+(?=[a-z])
空洞刺痛。第二个正则表达式将匹配两个字母之间的空格字符串;要考虑字符串的开头/结尾,请使用
(?<=(^|[a-z]))\s+(?=($|[a-z]))
或
\b\s+\b
第二个将匹配两个单词边界之间的空格,其中包括句点字符,如句号,逗号,连字符等。