Я думаю, что выражение, предоставленное Kolink, будет служить вам лучше всего. Предполагая, что ваш HTML хранится в переменной с именем «htmllist», этот код должен работать:
<cfset htmllist = ReReplaceNoCase(htmllist,'<li[^>]+id="id5".*?</li>\s*','','ALL')>
Как упоминал Джейк Физел, HTML не является обычным, но это должно работать. Если ваша проблема усложняется (например, если вам необходимо принять меры по отношению различных атрибутов), решение на основе XML может вам пригодиться.
Предполагая, что ваша переменная "htmllist" включает окружающие теги "UL" и является допустимым XML, следующий код будет эквивалентен решению с регулярными выражениями, опубликованному выше.
<cfset htmllist = ReplaceNoCase(htmllist,"LI>","li>","ALL")>
<cfset xLis = XmlParse(htmllist,false)>
<cfloop index="ii" from="#ArrayLen(xLis.ul.li)#" to="1" step="-1">
<cfif xLis.ul.li[ii].XmlAttributes["id"] EQ "id5">
<cfset ArrayDeleteAt(xLis.ul.li,ii)>
</cfif>
</cfloop>
<cfset htmllist = htmllist = ToString(xLis)>
Это не лучше для решения исходной проблемы, но может помочь в качестве отправной точки, если она станет более сложной.