我正在使用以下正则表达式来捕获长度始终为50个字符的固定宽度“description”字段:
(?.{50})
我的问题是描述有时包含空格的 lot ,例如
"FLUID COMPRESSOR "
有人可以提供一个正则表达式:
答案 0 :(得分:15)
为一个空格替换两个或多个空格:
s/ +/ /g
编辑:对于任何空白区域(不仅仅是空格),如果您使用的是perl兼容的正则表达式库,则可以使用\ s,以及出现次数的大括号语法,例如
s/\s\s+/ /g
或
s/\s{2,}/ /g
编辑#2:忘记/ g全局后缀,谢谢JL
答案 1 :(得分:9)
str = Regex.Replace(str, " +( |$)", "$1");
答案 2 :(得分:2)
Perl的变体: 1)s / \ s + $ //; 2)s / \ s + / / g;
答案 3 :(得分:2)
C#:
只有你想修剪所有的空白区域 - 在开始,结束和中间。
string x = Regex.Replace(x, @"\s+", " ").Trim();
答案 4 :(得分:1)
您是否有特殊原因要求正则表达式?它们可能不是完成此任务的最佳工具。
像
这样的替代品 s/[ \t]+/ /g
应该压缩内部空白(实际上,它也会压缩前导和尾随空格,但听起来不像是一个问题。)和
s/[ \t]+$/$/
将处理尾随空格。 [我在这里使用sed
ish语法。你没有说出你喜欢什么味道。]
我手边没有办法在单个表达中做到这一点。
答案 5 :(得分:1)
由于压缩空白和修剪边缘周围的空白是概念上不同的操作,我喜欢分两步完成:
re.replace("s/\s+/ /g", str.strip())
不是最有效的,但非常易读。
答案 6 :(得分:0)
/(^ [\ s \ t] + | [\ s \ t] +([\ s \ t] | $))/ g替换为$ 2(开头|中/末)