gpt4 book ai didi

javascript - 如何选择不能成为组成员且在正则表达式中不为空的表达式以进行 Markdown ?

转载 作者:行者123 更新时间:2023-12-04 07:36:28 25 4
gpt4 key购买 nike

我正在尝试进行自定义 Markdown 。我也在使用 katex 和 $ ... $团体。但是在替换表达式时,如果它们在 $ ... $ 中组,我要不替换这些表达式。
示例:Lorem **Ipsum** (1) 是 *simply* (2)打印排版行业的虚拟文字。自 1500 年代以来,Lorem Ipsum 一直是业界标准的虚拟文本,$ \sqrt{2} **must be no bold **(3) *must be no italic *(4) $ ****(5) **(6)...

  • 示例 (1):以 ** 开头并以 ** 结尾它不在 $...$ 中group 所以它会很大胆。
  • 示例(2):以 * 开头并以 * 结尾它不在 $...$ 中group 所以它会是斜体。
  • 示例 (3):以 ** 开头并以 ** 结尾但它在 $...$ group 所以它不会是大胆的。
  • 示例 (4):以 * 开头并以 * 结尾但它在 $...$ group 所以它不会是斜体。
  • 示例 (5):以 ** 开头并以 ** 结尾但它是空的,所以它不会是粗体。
  • 示例 (6):以 * 开头并以 * 结尾但它是空的,所以它不会是斜体。

  • 所以,我需要两个正则表达式。其中之一应该选择以 ** 开头的那些。并以 ** 结尾不能为空且不在 $ ... $ 中的团体。另一种是选择以 *开头的并以 * 结尾不能为空且不在 $ ... $ 中的团体。

    最佳答案

    To select the ones that start with * and end with * that cannot be empty and are not in the $ ... $ group:


    您可以使用此正则表达式:
    (?<!\*)\*[^*\s]+\*(?!\*)(?=(?:(?:[^$]*\$){2})*[^$]*$)
    RegEx Demo
    正则表达式详情:
  • (?<!\*) :如果前一个字符是 *,则否定后视使匹配失败
  • \* : 比赛开幕*
  • [^*\s]+ : 匹配任何不是 * 的字符的 1+而不是空格
  • \* : 比赛结束 *
  • (?!\*) : 如果下一个字符是 *,则否定前瞻使匹配失败
  • (?=(?:(?:[^$]*\$){2})*[^$]*$) :先行断言 0 对或多对 $..$确保我们在内部不匹配 $...$

  • 如果要匹配单星文本 $...$用:
    (?<!\*)\*[^*\s]+\*(?!\*)(?!(?:(?:[^$]*\$){2})*[^$]*$)
    RegEx Demo 2

    关于javascript - 如何选择不能成为组成员且在正则表达式中不为空的表达式以进行 Markdown ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67717588/

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