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