gpt4 book ai didi

javascript - 用javascript包装大 Markdown 段落

转载 作者:行者123 更新时间:2023-11-29 19:49:36 28 4
gpt4 key购买 nike

我正在尝试查找大段落(超过一定数量的字符)并将其包装到一个范围内。目前我正在这样做:

output.replace(/(\n{2}|^)([^\n{2}]{500,})(\n{2}|$)/mg, '$1<span class="warning-big-paragraph">$2</span>$3');

Markdown 段落由两个换行符分隔。

问题是当我用这样的样本数据测试它时:

text text text text [500 other chars]

text text text text [300 other chars]
text text text text [300 other chars]

它不包裹第二段。

最佳答案

这部分 [^\n{2}]{500,} 并不像您认为的那样。它将匹配 500 个或更多除换行符外的任何字符、{2 次。试试这个:

var pattern = /(\n{2}|^)((?:[^\n]|[^\n]\n[^\n]){500,})(\n{2}|$)/mg

这将匹配一对换行符或字符串的开头,后跟 500 个或更多的非换行符或不与任何其他换行符相邻的换行符,后跟一对新的-行字符或字符串的结尾。

但是这里还存在一些问题:

  1. 如果前面有一个换行符,它将不匹配第一段,如果后面有一个换行符,则不会匹配最后一段。
  2. 在两个连续的长段落之间需要四个换行符,因为前一个匹配以两个新行结束,下一个匹配以两个新行开始。

这个模式解决了这两个问题:

var pattern = /(\n{2}|^\n|^)((?:[^\n]|[^\n]\n[^\n]){500,})(?=\n{2}|\n$|$)/mg

这将匹配一对换行符,字符串的开头和单个换行符,或字符串的开头,后跟 500 个或更多非换行符或不相邻的换行符到任何其他换行符,后跟一对换行符、单个换行符和字符串结尾,或字符串结尾。最后一部分是 lookahead assertion ,所以它不包含在匹配中,意思是对于两个连续的匹配,它可以用作上一个匹配的条件和下一个匹配的一部分。

你可以测试它 here

关于javascript - 用javascript包装大 Markdown 段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103802/

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