从文件中提取正则表达式捕获组的匹配项

15 浏览
0 Comments

从文件中提取正则表达式捕获组的匹配项

我想在Linux命令行下执行标题命名的操作(也可以使用多个bash脚本)。我尝试的命令是:

sed 's/href="([^"])"/$1/g' page.html > list.lst

但显然失败了。

更准确地说,这是我的输入:




我想要的输出是输入文件中所有匹配项的逗号分隔或空格分隔列表:

style/css/colors.css,style/css/global.css,style/css/icons.css

我认为我得到了正确的表达式:href="([^"]*)"

但我不知道如何执行这个操作。sed会进行搜索/替换,这不完全是我想要的。(相反,我只需要保留匹配项,并将其余的部分丢弃,而不是替换它们)

0
0 Comments

问题的出现原因:在处理HTML文件时,需要从文件中提取出正则表达式捕获组所匹配的内容。解决方法是使用一系列的命令来实现这个目标。

解决方法:根据给定的正则表达式,使用grep命令从文件中提取出包含href的行,然后使用sed命令将这些行处理成只剩下href的内容,接着使用xargs命令将这些内容合并成一行,最后使用sed命令将空格替换为逗号。

然而,需要注意的是,使用正则表达式解析HTML文件会有许多问题。例如,属性中使用单引号而不是双引号(或者根本不使用引号)、在href和=之间使用空格、将href放在新行等。如果不能确定HTML文件的格式与给定的正则表达式完全匹配,那么使用正则表达式解析HTML文件可能是一个坏主意。

总之,这个问题是在处理HTML文件时需要提取正则表达式捕获组的内容,解决方法是使用一系列的命令来实现这个目标。然而,需要注意使用正则表达式解析HTML文件可能会出现许多问题。

0