я попытался раскрасить в Rebol в URL, как этотКак разобрать/раскрасить ключевые слова/пары значений в URL-адресе?
content: "http://domain.com/test.php?keyword=hdhdf&hdhd=sdcfsv&sbcfsv=sdncfd&sncfsdv=dncsv&cnsv=dshdkd&scsv=12334&DXV=D&SWJDJJDFDJQKKKKKKKKKKKK&DFG=V&DJJF=DJVNVV&DJFFFFFFFFFF=33333"
rule-keyword-0: [to "?" thru "?" mark: (insert mark {<font color="red">}) 19 skip to "=" mark: (insert mark "</font>") thru "="]
rule-keyword-1: [to "&" thru "&" mark: (insert mark {<font color="red">}) 19 skip to "=" mark: (insert mark "</font>") thru "="]
rule-value-0: [to "</font>=" thru "</font>=" mark: (insert mark {<font color="blue">}) 20 skip to "&" mark: (insert mark "</font>") thru "&"]
rule-value-1: [to "</font>=" thru "</font>=" mark: (insert mark {<font color="blue">}) 20 skip to end mark: (insert mark "</font>")]
rule-keyword: [any [rule-keyword-0 | rule-keyword-1] to end]
rule-value: [any [rule-value-0 | rule-value-1] to end]
parse content rule-keyword
parse content rule-value
Но выход не правильно (см цвет пример двойного шрифта = «синий» в конце):
http://domain.com/test.php?<font color="red">keyword</font>=<font color="blue">hdhdf</font>&<font color="red">hdhd</font>=<font color="blue">sdcfsv</font>&<font color="red">sbcfsv</font>=<font color="blue">sdncfd</font>&<font color="red">sncfsdv</font>=<font color="blue">dncsv</font>&<font color="red">cnsv</font>=<font color="blue">dshdkd</font>&<font color="red">scsv</font>=<font color="blue">12334</font>&<font color="red">DXV</font>=<font color="blue">D&<font color="red">SWJDJJDFDJQKKKKKKKKKKKK</font>&DFG</font>=<font color="blue">V&<font color="red">DJJF</font>=DJVNVV</font>&<font color="red">DJFFFFFFFFFF</font>=<font color="blue"><font color="blue">33333</font>
Что правильно Правило
Я посмотрел на результат: это дает то, что я хотел. Теперь я буду царапать голову, чтобы понять ваш код. Иногда синтаксический анализ кажется сложным для простых требований. Может быть, в таком случае регулярное выражение проще? –
То, что я всегда пытаюсь сделать, - это какое-то правило композиции для правил синтаксического анализа (начинайте с 2 независимых правил и суммируйте их), но это не кажется возможным или сложным при анализе. –
Все, что есть, это найти пары вокруг =, отмечает место, где должна быть вставлена каждая строка, а затем вставляет второй первый (если я вставил первый первый, тогда положение второго будет изменено), а затем на 1-ю секунду. Затем я пропускаю материал, который я вставил. После синего шрифта я затем проверю, не закончил ли я. Вы можете сделать это с несколькими правилами, но я просто сделал это в одном. –