1

{{my_list | join: "<\ 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

正規表現を使用してCSSを4番目と5番目のコンマに挿入しようとしているので、この列のテキストを強調表示できますが、これを行うための式を理解できません。これを達成するための他の方法も高く評価されています。

他の情報:

1)各行は「\n」で終わります。これは削除でき、HTML表示は変更されませんが、必要に応じて正規表現で使用できるように残しておきます。2)この例では、文字列に「$ GPGGA」などの適切なヘッダーが常に含まれるとは限りませんが、正規表現で必要な場合は、行の先頭を識別するのに役立つヘッダーを追加できます。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)

よろしく

4

2 に答える 2

0

5 番目の値を、タグ でラップされた値自体に置き換えることで、これを実現できます。<span>

正規表現:^((?:[\w\d\.\$]+,){4})([\d\.]+)
置換:\1<span class='my_highlight'>\2</span>

ここで説明されたデモ: http://regex101.com/r/cX5iA0

注:5番目の値は数字とドットになると想定しました

于 2013-03-17T04:12:42.793 に答える
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'.
于 2013-03-17T18:53:27.597 に答える