gpt4 book ai didi

正则表达式查找标记

转载 作者:行者123 更新时间:2023-12-01 07:40:30 27 4
gpt4 key购买 nike

我确定有人已经问过这个问题,但我不知道在谷歌中搜索什么词来找到这些答案。

我必须将带有标记的文本“翻译”为 html(或 rtf 或 xaml)。 “粗体”的标记是 *。如果我希望粗体文本包含文字 * 我必须用反斜杠掩盖它。

因此,标记的文本...

This is *ju\*st* a test.

...应该翻译成“这是 只是*st 一个测试。”

我正在寻找一种正则表达式模式,以便在我的标记文本中将所有匹配项“翻译”为粗体。

现在我坚持使用这个(字面的星号后跟一个或多个不是星号的字符(尽可能少),然后是字面的星号)
\*[^*]+?\*

但是,我如何增强“一个或多个不是星号的字符”部分,以免停在前面带有反斜杠的星号上?

我想在 .NET 项目中使用这个正则表达式,以防语言之间存在差异。

最佳答案

您可以使用

(?<=(?<!\\)(?:\\{2})*)\*[^\\*]*(?:\\.[^\\*]*)*\*

.NET regex demo .

详情
  • (?<=(?<!\\)(?:\\{2})*) - 正面回顾,确保没有 \在当前位置之前转义字符。换句话说,它匹配紧跟在以下位置的位置:
  • (?<!\\) - 否 \字符后跟
  • (?:\\{2})* - 任何零次或多次重复的双反斜杠
  • \* - 一个 *字符
  • [^\\*]* - 除 \ 之外的零个或多个字符和 *
  • (?: - 非捕获组匹配的开始...
  • \\. - 任何字符(除了换行符,用 RegexOptions.Singleline 编译模式以允许任何转义字符)用 \ 转义字符
  • [^\\*]* - 除 \ 之外的零个或多个字符和 *
  • )* - 零次或多次
  • \* - 一个 *字符。
  • 关于正则表达式查找标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487646/

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