2013-06-13 3 views
0

Привет У меня есть таблицы стилей, где я использовать XSL: анализ-строку со следующим регулярным выражением:Исключить определенную строку из переменной в регулярное выражение

(&journal_abbrevs;)[\s ]*([0-9]{{4}})[,][\s ][S]?[\.]?[\s ]?([0-9]{{1,4}})([\s ][(][0-9]{{1,4}}[)])? 

Вам не нужно смотреть на все вещи :)

& journal_abbrevs; выглядит следующим образом:

"example-String1|example-String2|example-String3|..." 

Что мне нужно сделать, знаю, исключить одну из строк в & journal_abbrevs; из этого регулярного выражения. Например. Я не хочу, чтобы example-String1 соответствовал.

Любые идеи о том, как это сделать?

ответ

0

Кажется, что XSLT regex не поддерживает look-around. Поэтому я не думаю, что вы сможете получить решение для этого, которое не требует выписывания всех строк из journal_abbrevs в вашем регулярном выражении. Related question.

Чтобы минимизировать количество выписывать, можно разделить journal_abbrevs в journal_abbrevs1 скажем, journal_abbrevs2 и journal_abbrevs3 (или сколько вы решили использовать) и только выписывать ту, которая содержит строку, которую вы хотите исключить. Если journal_abbrevs1 содержит строку, вы затем в конечном итоге что-то вроде:

((&journal_abbrevs2;)|(&journal_abbrevs3;)|example-String2|example-String3|...)... 

Если она поддерживает look-around, вы могли бы использовали очень простой:
(?!example-String1)(&journal_abbrevs;)...

+0

Спасибо за ваш ответ, но это похоже, что xslt не поддерживает это. Если я попробую (?! Example-String1) (& journal_abbrevs;) [\ s  ] * ... таблица стилей больше не может быть скомпилирована. – pypat

+0

@pypat Отредактировано. – Dukeling

+0

Я уже думал об этом, но я надеялся, что есть более элегантное решение. Думаю, мне придется пойти с ним. – pypat

Смежные вопросы