我正在使用{{my_list |。在HTML模板中呈现列表加入:“< \ br>”}},它显示为......
$GPGGA,062511,2816.8178,S,15322.3185,E,6,04,2.6,72.6,M,37.5,M,,*68
$GPGGA,062512,2816.8177,S,15322.3184,E,1,04,2.6,72.6,M,37.5,M,,*62
$GPGGA,062513,2816.8176,S,15322.3181,E,1,04,2.6,72.6,M,37.5,M,,*67
$GPGGA,062514,2816.8176,S,15322.3180,E,1,03,2.6,72.6,M,37.5,M,,*66
$GPGGA,062515,2816.8176,S,15322.3180,E,6,03,2.6,72.6,M,37.5,M,,*60
我正在尝试使用正则表达式在第4和第5个逗号中插入CSS,这样我就可以突出显示此列中的文本,但是我无法弄清楚要执行此操作的表达式。实现这一目标的其他方法也很受欢迎。
其他信息:
1)每一行以'\ n'结尾。虽然这可以删除并且HTML显示没有改变,但我已将其保留,以便在需要时使用正则表达式。 2)在这个例子中,字符串并不总是有一个很好的标题,例如'$ GPGGA',尽管如果正则表达式需要,我可以添加一个来帮助ID开始行。 3)列可能不是本例中指示的统一字符数。
我正在处理的过滤器如下
@register.filter(is_safe=True)
def highight_start(text):
return re.sub('regex to find 4th comma in each line', ",<span class='my_highlight'>", text, flags=re.MULTILINE)
@register.filter(is_safe=True)
def highight_end(text):
return re.sub('regex to find 5th comma in each line', "</span>,", text, flags=re.MULTILINE)
此致
答案 0 :(得分:0)
您可以通过替换第5个值来实现这一点,并将值本身包含在<span>
标记中。
RegEx:^((?:[\w\d\.\$]+,){4})([\d\.]+)
替换:\1<span class='my_highlight'>\2</span>
在此解释演示:http://regex101.com/r/cX5iA0
注意:我假设第5个值是数字和点
答案 1 :(得分:0)
谢谢@ka,他让我跟踪这个解决方案。我的工作过滤器使用:
expression = '^((?:[^,]+,){4})([^,]+)'
replace = r'\g<1><span class="my_highlight">\g<2></span>'
#[^,] also allows matching of hidden HTML tags in the text
#To get the groups to insert back into the text and not be overwritten, they need to be referenced as indicated in 'replace'.