gpt4 book ai didi

regex - 如何使用正则表达式突出显示搜索到的单词

转载 作者:行者123 更新时间:2023-12-02 15:14:37 24 4
gpt4 key购买 nike

你好
我正在开发一个普通的应用程序,要求我突出显示(添加跨度)到搜索到的单词。例如,给出以下文本:

youtube

[href="youtube.com] i am here , in Youtube[/a]

我想搜索单词“youtube”,当它返回时,上面的文本应如下所示:
[span]youtube[span]

[href="youtube.com] i am here , in [span]Youtube[/span] [/a]

必须忽略href或iframe中包含的youtube单词。
目前,我有以下代码:
def m = test =~ /([^<]*)?(youtube)/
println m[0]

def highLightText = { attrs, body ->
def postBody = attrs.text
def m = postBody =~ /(?i:${attrs.searchTerm})/
def array = []

m.each{
array << it as String
}
array.unique()

String result = postBody
array.each{
result = result.replaceAll("${it}", "<span class='highlight'>${it}</span>")

}

out << result
}

它返回:
[span]youtube[span]

[href="[span]youtube[span].com] i am here , in [span]Youtube[/span] [/a]

任何人都可以用正则表达式帮助我,该正则表达式只能选择链接或其他标签中未包含的单词。

谢谢

最佳答案

使用正则表达式不太可能实现可维护的解决方案-问题太复杂了。

将您的HTML解析为DOM,然后仅将文本节点视为适合潜在的突出显示。根据定义,文本节点将仅是那些呈现的内容,而不会是元素名称,属性/属性值等。

然后,您将问题的复杂性降低为:如何在另一个字符串中查找并突出显示一个字符串?

关于regex - 如何使用正则表达式突出显示搜索到的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com