gpt4 book ai didi

javascript - 如何用正则表达式表达 "Not this character including boundary"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:11 27 4
gpt4 key购买 nike

下面的正则表达式匹配所有被单个星号字符包围的序列,这就是斜体文本在 Markdown 中的强调方式。我想格式化文本包括用于强调的星号。除此之外,我确实允许在序列中使用独立的星号。示例 *This is italic text\n with * in between*

/\*[^\*\s]([^\*]|(\*\s))*[^\*\s]\*/g

此外,在 Markdown 中,粗体文本被双星号字符强调非常相似。为了匹配这些,我使用了这个正则表达式:

/\*\*[^\*\s]([^\*]|(\*\s))*[^\*\s]\*\*/g

两者各自独立,但一起应用时,粗体文本的内部也会被检测为斜体文本。所以除了外面的星号,格式化的文本都是粗体和斜体。要解决这个问题,我将不得不表示斜体序列不允许被第二对星号包裹。

问题是 [^\*] 需要任何其他字符,因此根本需要一个字符。如果上面的第一个正则表达式是附加的星号,但在搜索字符串的开头或结尾处仍然匹配,我该如何表示上面的第一个正则表达式不匹配?

请注意,我使用的是 JavaScript,所以没有可用的后视。

最佳答案

编辑:由于我误解了这个问题,我向您提出一个带有您的约束的新模式:

/\*((?:[^\s*]+|\s+\*?)*)?\*/

有趣的是整个模式包含标记和捕获组里面的内容。请注意,内容是可选的(“**” 是空内容周围的有效标记)


旧帖:

你问的是不可能的,因为没有规则可以选择字符串中的哪个星号作为结束星号。如果您想使用星号作为标记,您必须要求用户转义文字星号。

示例字符串:

*This is italic text\n with \* in between* text *an other italic part* text

要处理这种字符串,可以使用这种模式来避免转义字符:

/\*(?:[^*\\]+|\\{2}|\\[\s\S])*\*/

关于javascript - 如何用正则表达式表达 "Not this character including boundary"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875459/

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