-3

如何删除某些标签/文本之前的内容,例如我想删除此评论之前的所有内容:

    <!-- article begins -->

我想在之后删除所有内容

    <!-- article ends -->
4

4 回答 4

1

Python 示例(你没有说你想要哪种语言):

import re
reobj = re.compile(".*?<!-- article begins -->(.*)<!-- article ends -->.*", re.DOTALL)
result = reobj.sub(r"\1", subject)

这也会删除标签。并且它假设 中只有一article begins/endssubject

于 2012-09-09T17:32:55.587 回答
1

C#(不需要正则表达式)。

string start = "<!-- article begins -->";
string end = "<!-- article ends -->";

var article = text.Split(new string[] { start, end }, 
                         StringSplitOptions.RemoveEmptyEntries)[1];
于 2012-09-09T17:44:46.107 回答
0

取决于您的正则表达式引擎。他们几乎都有一个模式,你可以问“。” 匹配所有字符,包括换行符。然后你会捕获你想要的东西:

.*article begins.....(.*).....article ends.*

我使用点作为注释标记,因为其中一些字符是特殊的,具体取决于您的正则表达式引擎。

您可能会改为查看 awk,它有更好的方法:

awk '/article begins/,/article ends/ { print }' filename

它用一个动作指定一个正则表达式范围:

/start pattern/,/end pattern/ { action to do }
于 2012-09-09T17:35:10.980 回答
0

sed

sed -n '/<!-- article begins -->/,/<!-- article ends -->/p' yourfile

它不假设只有一对匹配的标签

于 2012-09-09T17:37:40.683 回答