创建一个匹配python元组结构的正则表达式

时间:2011-03-24 10:12:51

标签: javascript python regex web-applications

我正在做一个JavaScript插件,在每次页面加载时启动,用链接替换每个匹配的结构......该链接重定向到Web应用程序/数据库。适用于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 个答案:

答案 0 :(得分:1)

嗯,我不确定我是否理解正确,但是如果你真的只想在“(item_set_slot,”itm_heavy_crossbow“,slot_item_multiplayer_item_class)中匹配”item_set_slot“,那么以下正则表达式应该这样做:

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

生成URL的JavaScript可能如下所示:

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');

请注意正则表达式中附加的.*,这是匹配元组其余部分所必需的。