有没有一个正则表达式可以搜索一组行并替换该组中的一行并将其他单词保留在那里

时间:2018-07-19 14:46:49

标签: regex file sublimetext regex-lookarounds regex-group

例如,如果我有类似的东西:

<House \>
 windows
 walls
<\House>

我想删除让我说的墙壁,我该如何使用正则表达式呢?还是有比正则表达式更好的选择?

所以我需要它看起来像:

<House \>
 windows
<\House>

那么我将如何使用正则表达式来解决这个问题?

2 个答案:

答案 0 :(得分:1)

(?s)(?<=<Building \/>).*(?=<\/Building>)仅捕获您两个建筑标签之间的内容。

(?s)允许.匹配换行符

(?<=<Building \/>)意味着您的内容应遵循与<Building />匹配的一段文本

.*是您的内容

(?=<\/Building>)只是意味着您的内容后面应带有</Building>

Demo

如果要修剪所有丑陋的空白,可以始终使用this pattern ((?s)(?<=<Building \/>)\s*(.*)\s*?(?=<\/Building>))并参考捕获组1。

答案 1 :(得分:1)

那又怎么样:

Find: (<Building />\s+)floor(\s+</Building>)
Replace: \1corner\2