Regex 如何使用正则表达式在HTML标记之间提取数据?

Regex 如何使用正则表达式在HTML标记之间提取数据?,regex,Regex,我在班上被分配了一些sed作业,离完成作业还有一步之遥。我绞尽脑汁想找到一个解决办法,但什么都没有成功到我要放弃的地步 基本上,在我得到的文件中,我应该替换这个: <b>Some text here...each bold tag has different content...</b> 我已经部分完成了,但我不知道如何使用sed(regexp)来“回显”提取的内容 我很好地替换了内容,但是当我试图实际输出HTML标记之间的内容时,它出错了 如果这让人困惑,我真的很抱歉

我在班上被分配了一些sed作业,离完成作业还有一步之遥。我绞尽脑汁想找到一个解决办法,但什么都没有成功到我要放弃的地步

基本上,在我得到的文件中,我应该替换这个:

<b>Some text here...each bold tag has different content...</b>
我已经部分完成了,但我不知道如何使用sed(regexp)来“回显”提取的内容

我很好地替换了内容,但是当我试图实际输出HTML标记之间的内容时,它出错了

如果这让人困惑,我真的很抱歉。我已经在这个项目上做了几个小时了,现在有点受挫了。基本上,为什么这不起作用

s/<b>.*<\/b>/.*/g
s/*/.*/g
我只想输出没有粗体标记的内容


非常感谢

您需要使用一个捕获组,它是括号()

所以,就是这样:

s/<b>(.*)<\/b>/\1/g
s/(.*)/\1/g
捕获组从左到右编号,从一开始,然后递增

这种语法是执行正则表达式的标准方法;sed的语法略有不同。sed命令是

sed 's/<b>\(.*\)<\/b>/\1/g' [file]
sed's/\(.\)/\1/g'[文件]

sed-r's/(.*)/\1/g'[文件]
当然,如果您只想删除粗体标记,另一种解决方案是用空格替换HTML标记,如下所示

sed 's/<\([^>]\|\(\"[^\"]\"\)\)*>//g' [file]
sed的//\\\\\(\“[^\“]\”\)\)*>//g'[文件]
(我不喜欢塞德逃避一切的需要)


s/我认为这个问题应该向SED的人提出。比如:

如果你想在替换中引用你的正则表达式匹配项的一部分,你需要将该部分正则表达式放入一个捕获组,然后使用前面带有反斜杠的组号引用它。尝试以下操作:

s/<b>\(.*\)</b>/\1/g
s/\(.\)/\1/g

sed中不支持惰性量词。@jordoex-谢谢!编辑了该部分。啊,好的旧rtfm。提问者只是不知道如何捕获组,或者如何搜索组。这是家庭作业?哇。请将你的导师指给我看:
sed 's/<\([^>]\|\(\"[^\"]\"\)\)*>//g' [file]
s/<([^\]|(\"[^\"]\"))*>//g
s/<b>\(.*\)</b>/\1/g