gpt4 book ai didi

javascript - 使用正则表达式解析 Javascript 中的 Wiki 标记

转载 作者:行者123 更新时间:2023-11-28 02:57:46 24 4
gpt4 key购买 nike

我正在尝试使用 the Javascript Creole Wiki Markup Parser 解析一些 Wiki 风格的标记。我正在尝试扩展解析器来解析 div 标签,如下所示:

标记:<<此处的任何内容<<
HTML:<div class="left">content</div >

标记:>>此处的任何内容>>
HTML:<div class="right">content</div>

标记:^^ 此处的任何_内容 ^^
HTML:<div class="horz">content</div>

解析器使用正则表达式来解析标记,但正则表达式绝对不是我的强项,而且由于 js 文件几乎没有注释,我发现它特别难以编辑。我已经在这个人的博客上发帖寻求一些帮助,但由于该帖子已经发布了大约 2 年,我预计不会很快收到回复......

任何有关自定义此功能的帮助,或者如果有人可以指出已经支持 div 的 JavaScript 解析器,我们将不胜感激。

最佳答案

如果您不关心嵌套,您甚至不需要正则表达式。只需将“<< ”替换为“<div class='left'> ”,依此类推。

为了允许嵌套,您必须 (1) 更改标记,使结尾与开头不同(例如 <L> content </L> )和 (2) 运行正则表达式的次数与级别数相同。正则表达式(对于左侧 div)将是:

<L>(((?!</?L>).)*)</L>

替换字符串:

<div class="left">$1</div>

这是一个负责解析所有级别的函数:

function parseLeft(markup) {
var regex = /<L>(((?!<\/?L>).)*)<\/L>/g;
out = markup.replace(regex, '<div class="left">$1</div>');
if (out.length == markup.length) {
return out;
} else {
return parseLeft(out);
}
}

实际示例:

> parseLeft('<L> Outer div <L>inner div</L>outer again </L>');
<div class="left"> Outer div <div class="left">inner div</div>outer again </div>

关于javascript - 使用正则表达式解析 Javascript 中的 Wiki 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com