我有大量的Toml文件,其中一些包含我想删除的参数。我在构建与起始文本categories =
和结尾文本]
匹配的正则表达式时遇到了困难。根据下面的示例,我的正则表达式匹配开始和结束文本之间的文本,但不包括开始和结束文本本身。如何修改正则表达式以捕获开始和结束文本之间的所有内容?
我目前的正则表达式是:(?<=categories)(.*)(?=])
示例.toml包含:
+++
slug = "twenty-years-from-now-you-will-be-more"
description = ""
tags = [
"Quoteoftheday",
"Quote",
]
categories = [
"Quoteoftheday",
"Quote",
]
date = 2014-01-16T07:13:10-08:00
title = "twenty years from now..."
draft = false
+++
我想用正则表达式捕获的文本是:
categories = [
"Quoteoftheday",
"Quote",
]
示例代码为here.
答案 0 :(得分:1)
尝试使用以下正则表达式:
(?s)categories[\s=\[]+(.*?)]
<强>解释强>
(?s)
单行标记/修饰符categories[\s=\[]+
匹配'categories'和任何space = [(.*?)]
匹配任何字符和] <强> DEMO 强>
答案 1 :(得分:1)
使用否定字符类,您可以在没有DOTALL
或s
标记的情况下使其工作,以便它可以使用{J}支持DOTALL
之类的风格。
\ncategories([^]]*)\]
要使其与sed
一起使用,请使用此命令:
sed -i.bak '/^categories[ \t]*=/,/\]/d' file
cat file
+++
slug = "twenty-years-from-now-you-will-be-more"
description = ""
tags = [
"Quoteoftheday",
"Quote",
]
date = 2014-01-16T07:13:10-08:00
title = "twenty years from now..."
draft = false
+++