2015-07-06 8 views
1

При использовании parse диалекта, как разобрать тег, которые имеют свойства заключены ' или "`, как в:разбор HTML с одинарными или двойными кавычками

thru <h2 class="txt-medium txt-bold"> 

thru <h2 class='txt-medium txt-bold'> 

Одним из способов были сделать:

thru {<h2 class=} thru {txt-medium txt-bold} thru ">" 

Пытались использовать оператор | или, но без успеха. Могу ли я использовать оператор | для разбора тега?

ответ

1

Да, лет и можно использовать | оператор, но определяющий набор символов лучше в этом случае:

delimiter: charset [#"^"" #"'"] 
single: {<h2 class='txt-medium txt-bold'>} 
double: {<h2 class="txt-medium txt-bold">} 

>> parse single [thru "class=" delimiter copy values to delimiter thru ">"] values 
== "txt-medium txt-bold" 

>> parse double [thru "class=" delimiter copy values to delimiter thru ">"] values 
== "txt-medium txt-bold" 

Золотое правило, чтобы избежать to и thru, когда это возможно, и определить, что для соответствия.

+1

Это, конечно, упрощенное решение. Он не гарантирует, что начальный разделитель совпадает с окончательным. Чтобы улучшить его, вам нужно сделать что-то вроде: разделители: charset [# "^" "#" '"] ; ... сингл single [thru" class = "set delimiter delimiters копировать значения в разделитель через" > "] – rebolek

+0

Разбор в моей системе/версии Rebol' 3.0.0.4.40 не возвращает 'txt-medium txt-bold' 'как в вашем случае. Я получаю' == "" ' – Luis