创建匹配Python元组结构的正则表达式
我正在做一个JavaScript插件,每次页面加载时都会运行,它会把每个匹配的结构替换成一个链接……这个链接会重定向到一个网络应用程序/数据库。这是为《骑马与砍杀》游戏的程序员准备的资源。
理论上这很简单,但我在成功的路上遇到了一个巨大的障碍:正则表达式。
即使有一个叫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(/(</span>([_a-z]+)\,/gi, "(</span><a href='http://mbcommands.ollclan.eu/#$1' title='[?] Take an look in the Command Database' target='_blank'>$1</a>,");
}
addOnloadHook( swymbcommandshooker );
提前谢谢你们。
1 个回答
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');
注意正则表达式后面加的.*
,这是为了匹配这个元组的其余部分。