如何在某些标记/文字之前删除内容,例如我想在此评论之前删除所有内容:
<!-- article begins -->
我希望在
之后删除所有内容 <!-- article ends -->
答案 0 :(得分:1)
Python示例(您没有说出您想要的语言):
import re
reobj = re.compile(".*?<!-- article begins -->(.*)<!-- article ends -->.*", re.DOTALL)
result = reobj.sub(r"\1", subject)
这也删除了标签。它假设article begins/ends
中只有一个subject
对。
答案 1 :(得分:1)
C#(不需要正则表达式)。
string start = "<!-- article begins -->";
string end = "<!-- article ends -->";
var article = text.Split(new string[] { start, end },
StringSplitOptions.RemoveEmptyEntries)[1];
答案 2 :(得分:0)
取决于您的正则表达式引擎。他们几乎都有一种模式,你可以问“。”匹配所有字符,包括换行符。然后你会捕捉到你想要的东西:
.*article begins.....(.*).....article ends.*
我正在使用点作为注释标记,因为其中一些字符是特殊的,具体取决于您的正则表达式引擎。
你可能会看一下awk,它有一个更好的方法:
awk '/article begins/,/article ends/ { print }' filename
指定带有动作的正则表达式范围:
/start pattern/,/end pattern/ { action to do }
答案 3 :(得分:0)
使用sed
:
sed -n '/<!-- article begins -->/,/<!-- article ends -->/p' yourfile
它不假设只有一对匹配标签