【发布时间】:2019-02-01 21:54:43
【问题描述】:
我确定有人已经问过这个问题,但我不知道在 google 中搜索什么词才能找到这些答案。
我必须将带有标记的文本“翻译”为 html(或 rtf 或 xaml)。 “粗体”的标记是 *。如果我希望粗体文本包含文字 *,我必须用反斜杠掩盖它。
所以,标记的文本...
This is *ju\*st* a test.
...应该翻译为“这是ju*st测试。”
我正在寻找一种正则表达式模式,以便在我的标记文本中将所有匹配“翻译”为粗体。
现在我被这个困住了(一个字面星号后跟一个或多个不是星号的字符(尽可能少),然后是一个字面星号)
\*[^*]+?\*
但是如何增强“一个或多个不是星号的字符”部分,使其不会停留在以反斜杠开头的星号处?
我想在 .NET 项目中使用这个正则表达式,以防语言之间存在差异。
【问题讨论】:
-
\*(\\\*|[^*])+?\*-- 是反斜杠星号还是不是星号的字符? -
你需要
(?<=(?<!\\)(?:\\{2})*)\*[^\\*]*(?:\\.[^\\*]*)*\*。请参阅.NET regex demo 不要使用 regex101 来测试 .NET 正则表达式模式,它不支持 .NET 正则表达式语法。 -
你不能只使用
\*(\\\*|[^*])+?\*,因为这个模式does not make sure第一个匹配的*不是一个转义的星号。 -
@Wiktor:你能为新手解释一下你的长正则表达式模式吗?
标签: regex