Создание регулярного выражения, соответствующего структуре кортежа Python - PullRequest
0 голосов
/ 24 марта 2011

Я делаю плагин JavaScript, запускаемый при каждой загрузке страницы, который заменяет каждую соответствующую структуру ссылкой ... Эта ссылка перенаправляет в веб-приложение / базу данных.Ресурс для программистов игры Mount & Blade.

Теоретически это легко, но я нашел огромное препятствие на пути к успеху: регулярные выражения.

Даже с помощью программы под названиемQuickRegex Я не могу заставить структуру соответствовать.Или, если я не выполняю надлежащую подготовку, это приводит к неверным результатам.Соответствующая структура выглядит следующим образом:

(item_set_slot, "itm_heavy_crossbow", slot_item_multiplayer_item_class),

Я хочу выбрать item_set_slot и превратить его в ссылку на http://mbcommands.ollclan.eu/#$1


Это код, который я использую, это работает, более или менее.;)

/* Mount&Blade Command Database Linking by Swyter */
function swymbcommandshooker(){
/* Regular HTML Expressions */
document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML.replace(/[\(]([a-zA-Z_]+)[\,]/gi, "(<a href='http://mbcommands.ollclan.eu/#$1' title='[?] Take an look in the Command Database' target='_blank'>$1</a>,");

/* Python highlighter Support...*/
document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML.replace(/&#40;</span>([_a-z]+)\,/gi, "&#40;</span><a href='http://mbcommands.ollclan.eu/#$1' title='[?] Take an look in the Command Database' target='_blank'>$1</a>,");

}
addOnloadHook( swymbcommandshooker );

Заранее спасибо.

1 Ответ

1 голос
/ 21 июля 2012

Хм, я не уверен, правильно ли я вас понял, но если вы действительно хотите, чтобы совпадение "item_set_slot" в "(item_set_slot," itm_heavy_crossbow ", slot_item_multiplayer_item_class)," следующее регулярное выражение должно выполнить:

/^\(([a-z_]+),/i

JavaScript для генерации URL может выглядеть следующим образом:

var tuple = '(item_set_slot, "itm_heavy_crossbow", slot_item_multiplayer_item_class),';
var url = tuple.replace(/^\(([a-z_]+),.*/i, 'http://mbcommands.ollclan.eu/#$1');

Обратите внимание на добавленный .* в регулярном выражении, который необходим для соответствия остальной части кортежа.

...