【发布时间】:2015-02-02 20:00:17
【问题描述】:
我想将正则表达式匹配的文本复制到一个新文件中。
<SHOPITEM>([\s\S]*?)<YEAR>2015<\/YEAR>([\s\S]*?)<\/SHOPITEM>
([\s\S]*?) = 任何文本,任何行
这在 Sublime 编辑器中有效(我能找到),但是这个正则表达式如何查找 sed/grep(或任何其他 Unix 工具)?
【问题讨论】:
-
您是否使用正则表达式解析 XML?如果是这样,请期待问题。做 The Right Thing™ 并立即开始使用 XML 库。
-
grep(全局正则表达式打印)将允许您几乎可以抛出任何您想要的regex。sed(流编辑器磁盘)使用它的 own 正则表达式语法,大多数更复杂的正则表达式模式需要为sed设置不同的格式 -
@MattGreen 这里的问题是多行,
grep不这样做(但它的表亲pcregrep可以)并且sed需要一些看起来很奇怪的语法。但是不要告诉 OP,他们不应该为此使用正则表达式。 -
@Biffen 是的,但这是一个简单的 XML。我只需要按
过滤掉新项目。我看不出这里哪里有问题(不需要复杂的处理)。 -
@Adrian 你能以你认为神圣的东西发誓,输入的性质将永远改变吗?因为它只需要一些额外的空格或添加的属性就可以让你的正则表达式失败。甚至不要让我开始研究 cmets 和 CDATA 块。
标签: regex linux sublimetext2