【发布时间】:2014-09-01 13:52:58
【问题描述】:
我有一个包含以下示例内容的大文本文件:
number="+123 123 123" text="This is some text"
number="+123456" text="This may contain numbers"
number="+123456 789" text="Numbers here should keep their spaces"
number="+9 8 7 6 5" text="example 123 123 123"
我想要删除两个标识字符串之间的任何空白字符,在本例中为number= 和" text=,而不触及该行的其余部分。这样所需的输出将是:
number="+123123123" text="This is some text"
number="+123456" text="This may contain numbers"
number="+123456789" text="Numbers here should keep their spaces"
number="+98765" text="example 123 123 123"
(?<=[0-9])(\s)(?=[0-9]) 之类的正则表达式会干扰文本字段,这是不可取的。
我已经测试了一些使用类似(?<=address)(\s)(?=date) 的变体,但这不起作用。我认为问题在于无法处理空格和标记之间可能存在的额外数字?
将通配符匹配添加到诸如(?<=address.*)(\s)(?=.*date) 之类的lookbehinds/lookaheads 中似乎无效,或者我做错了?同样使用(/s+?) 让空格变得懒惰似乎对我没有帮助,但这是关于我对正则表达式的了解真正崩溃的地方:)
理想情况下,为了安全起见,我还想限制额外的等号和引号字符。即 number=" 在开始标记和 text=" 作为结束标记。
如果更简单,也欢迎任何 sed/awk 或类似解决方案。
【问题讨论】:
-
除了
number="+之后的那个以外,行中的其他地方是否可以有应该缩短的数字?示例number="+123 123 123" text="This is some text" number2="+435 234 132