我有一个问题要解决。
在我的CMS中,我有一种使用此HTML结构的增强标题
body {
display: grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: 1fr auto;
min-height: 100vh;
overflow: hidden;
}
我在主页中使用此增强标题作为预告片。第一个链接与内容,视频和& gallery链接到不同页面上的其他内容,因此有三个不同的链接。
当然,当有人点击内容时,我不能在博文中使用相同的标题,因为我有锚标签。
我需要编写一个只保留第一个锚标记内容的帮助器,所以
<h1><a href="http://...">This is the new Tesla.<span class="huge-title">Wow, 500 miles</span></a> | <a href="http://...">Video</a> | <a href="http://...">Gallery</a></h1>
任何提示?
答案 0 :(得分:0)
您可以使用:
original_title = '<h1><a href="http://...">This is the new Tesla.<span class="huge-title">Wow, 500 miles</span></a> | <a href="http://...">Video</a> | <a href="http://...">Gallery</a></h1>'
match = original_title.match(/^<h1><a href.*?>(.*?<\/span>)/)
puts match[1]
This is the new Tesla.<span class="huge-title">Wow, 500 miles</span>
如果span
可以到达任何地方,你只需稍微调整一下逻辑
match = original_title.match(/^<h1><a href.*?>(.*?<\/a>)/)
puts match[1].gsub('</a>', '')
This is the new Tesla.<span class="huge-title">Wow, 500 miles</span>
基本上你说的是,匹配以<h1><a href
开头的字符串(由^
表示),后跟任意数量的字符,直到找到第一个>
(这将是关闭锚标记的>
,然后在捕获一个组(由未转义的弯曲括号表示)后立即使用.*
指示的任意数量的字符,直到找到第一次出现的</span>
1}},由?
表示(没有?
如果你有更多的结束范围标记它将匹配所有内容,直到最后一个span标记,这样它就不贪婪并在第一次出现时停止你之后)。这将返回一个匹配数组,其中第一个索引是捕获的总内容,以及剩余的每个捕获组。在这种情况下,您需要第二个项目,因为它是捕获组。