Regex 从字符串中间修剪空白
我使用以下正则表达式捕获一个固定宽度的“description”字段,该字段的长度始终为50个字符:Regex 从字符串中间修剪空白,regex,parsing,Regex,Parsing,我使用以下正则表达式捕获一个固定宽度的“description”字段,该字段的长度始终为50个字符: (?.{50}) 我的问题是描述有时包含很多空白,例如 "FLUID COMPRESSOR " 是否有人可以提供一个正则表达式: 修剪结尾处的所有空白 将单词之间的任何空格压缩为一个空格 您要求使用正则表达式有什么特别的原因吗?它们可能不是执行此任务的最佳工具 替代品 s/[ \t]+/ /g 应该压缩内部空白(实际上,它也
(?.{50})
我的问题是描述有时包含很多空白,例如
"FLUID COMPRESSOR "
是否有人可以提供一个正则表达式:
您要求使用正则表达式有什么特别的原因吗?它们可能不是执行此任务的最佳工具 替代品
s/[ \t]+/ /g
应该压缩内部空白(实际上,它也会压缩前导和尾随空白,但听起来这不是问题。),并且
将处理尾随空格。[我在这里使用的是sed
ish语法。你没有说你喜欢什么口味。]
我看不出用一个表达式来表示的方法。用两个或多个空格替换一个空格:
s/ +/ /g
编辑:对于任何空白(不仅仅是空格),如果您使用的是与perl兼容的正则表达式库,则可以使用\s,并使用大括号语法表示出现的次数,例如
s/\s\s+/ /g
或
编辑#2:忘记了/g全局后缀,谢谢JLPerl变体:
1) s/\s+$/;
2) s/\s+//g 由于压缩空白和修剪边缘周围的空白在概念上是不同的操作,我喜欢分两步进行:
str = Regex.Replace(str, " +( |$)", "$1");
re.replace("s/\s+/ /g", str.strip())
不是最有效的,但可读性很强。/(^[\s\t]+\s\t]+([\s\t].$)/g替换为$2(开头|中间/结尾)C#:
只有当你想修剪所有的空白-在开始,结束和中间
string x = Regex.Replace(x, @"\s+", " ").Trim();
我在一个更大的正则表达式中使用它,从s/\s+//g,甚至只是s/\s+//g——它偶尔会将一个空间映射到另一个空间,但这并不重要。但是全局后缀当然很重要。不幸的是,如果它在初始字符串中,所有建议的正则表达式都会在末尾留下一个空格。好极了!这个正则表达式正确地处理单词之间和字符串末尾的空格。我想建议的是一样的。:)
re.replace("s/\s+/ /g", str.strip())
string x = Regex.Replace(x, @"\s+", " ").Trim();