将 Markdown 转换为 HTML 的正则表达式

2024-01-16

如何编写正则表达式将 mark 转换为 HTML?例如,您可以输入以下内容:

This would be *italicized* text and this would be **bold** text

然后需要将其转换为:

This would be <em>italicized</em> text and this would be <strong>bold</strong> text

与 stackoverflow 使用的 mark down 编辑控件非常相似。

澄清

就其价值而言,我正在使用 C#。另外,这些是only我想要允许的真实标签/降价。转换的文本量将少于 300 个字符左右。


最好的方法是找到移植到您正在使用的任何语言的 Markdown 库版本(您没有在问题中指定)。


既然您已经澄清您只想处理 STRONG 和 EM,并且您正在使用 C#,我建议您看一下Markdown.NET http://www.aspnetresources.com/blog/markdown_announced.aspx看看这些标签是如何实现的。正如你所看到的,它实际上是两个表达式。这是代码:

private string DoItalicsAndBold (string text)
{
    // <strong> must go first:
    text = Regex.Replace (text, @"(\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1", 
                          new MatchEvaluator (BoldEvaluator),
                          RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);

    // Then <em>:
    text = Regex.Replace (text, @"(\*|_) (?=\S) (.+?) (?<=\S) \1",
                          new MatchEvaluator (ItalicsEvaluator),
                          RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
    return text;
}

private string ItalicsEvaluator (Match match)
{
    return string.Format ("<em>{0}</em>", match.Groups[2].Value);
}

private string BoldEvaluator (Match match)
{
    return string.Format ("<strong>{0}</strong>", match.Groups[2].Value);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Markdown 转换为 HTML 的正则表达式 的相关文章

随机推荐

  • 使用 DateTime.TryParse 检查字符串是否为有效日期

    我在用DateTime TryParse 函数检查特定字符串是否是有效的日期时间 不依赖于任何区域性 令我惊讶的是 该函数返回true对于 1 1 1 1 等偶数字符串 我怎么解决这个问题 Update 这是否意味着 如果我想检查特定字符串
  • 从 javascript 显示 Android 键盘

    我希望能够在导航到页面后在移动浏览器 例如 Android 上显示键盘 我已经看到了一些解决方法 用javascript在手机上显示虚拟键盘 https stackoverflow com questions 6837543 show vi
  • 以下示例中给出的结构有何不幸之处?

    15 6 2 初始化基数和成员 N4713 节在第 11 项之后有以下示例 struct A A default OK A int v v v OK const int v 42 OK A a1 error ill formed bindi
  • `more.com` 返回“内存不足”。

    环境详情 x64 Win7 SP1 企业版 Windows PowerShell v5 0 没有加载任何配置文件 我的本地电源外壳 questions tagged powershell会话正在返回 内存不足 当我尝试执行时help or
  • 如何对随时间缓慢变化的数据进行建模?

    假设我得到了大量 200 万行 数据 这些数据应该是静态且不变的 应该是 这些数据每月重新发布一次 有哪些方法可以用于 1 了解哪些数据点逐月发生变化以及 2 使用给定时间点的数据 解决方案1 天真地保存每个数据快照 并按日期注释 差异意识
  • 在从独立相机捕获的图像上绘制文本(时间戳)

    我的代码如下 单击即可打开相机 拍照 从相机获取照片 然后放入图像视图中 不过 我想拍摄图像并在图像上应用文本 某种时间戳 最好是图像的时间戳 或者只是系统日期时间 并保存为 jpeg 如果有人能帮助我那就太好了 public class
  • 如何存储网络应用程序的配置设置?

    我有一些站点元数据我希望可以更改 例如 在我的应用程序中 如果系统管理员不想使用站点的 库存 部分 他 她可以将其关闭 并且它将从主站点消失 所以我在想 也许我可以在数据库中创建一个名为 元 的表 并在那里插入值 或元组 然后 如果模块被关
  • 将“@daily-co/daily-js”导入 SvelteKit 应用程序会引发“全局未定义”错误

    我尝试过的 我尝试通过解决它if browser 进一步来说 if browser let DailyIframe await import daily co daily js 在load函数里面
  • 如何读写MP3到数据库

    如何从Sql数据库读取MP3 在 sql 中 我已将文件存储为二进制格式 现在我想检索存储在 sql 中的 Mp3 文件并显示在我的 aspx 页面中 如何 请帮忙 以最简单的形式 这就是您获取原始字节的方式 在不知道您想要它做什么的情况下
  • 分段错误:11 - Xcode 6.3

    无法存档 我的应用程序在模拟器和多个设备上运行良好 Xcode 6 3 2 基于 swift 但是当我尝试存档它时出现错误Command failed due to signal Segmentation fault 11 其他人面临同样的
  • 视图索引 (Oracle)

    假设我有两张桌子 tab a and tab b 我创建了一个如下所示的视图 create view join tabs as select col x as col z from tab a union select col y as c
  • Objective C 中什么是非空?

    有人可以详细说明为什么吗nonnulliOS 9 中引入 例如 NSArray method instancetype array is now instancetype nonnull array 参考 https developer a
  • C 的 std::vector 替代品 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有替代方案C 中的 std 向量 我发现这个实现 http codingrecipes com implementation
  • (Flutter) 具有有限内容的无限滚动 `ListView.builder`

    1 问题 我该如何做我的ListView builder能够滚动到顶部和底部的空白区域吗 例如 我有一个自定义小部件列表 我希望用户能够通过滚动到列表中最上面的卡片 位于屏幕顶部 更接近他的拇指 而Flutter用空背景渲染顶部空间 2 到
  • 使用 MVC Web API 发布对象数组

    我有一个基本的后期操作 适用于单个对象RecordIem 我想做的是执行相同的操作 但通过使用相同格式发布一组请求来批量执行 例如 public HttpResponseMessage Post RecordItem request var
  • Python Multiprocessing.Pool 惰性迭代

    我想知道 python 的 Multiprocessing Pool 类与 map imap 和 map async 一起使用的方式 我的特殊问题是 我想映射一个创建内存密集型对象的迭代器 并且不希望所有这些对象同时生成到内存中 我想看看各
  • 用于查找时间跨度的最大平均值的 LINQ 查询

    我有一组数据有两个点 瓦特 和时间戳 每个数据点间隔 1 秒 所以它看起来像这样 0 01 100 0 02 110 0 03 133 0 04 280 该数据集长达几个小时 我想编写一个查询 在其中可以找到不同时间段 5 秒 1 分钟 5
  • 如何在 Android Retrofit 中忽略 JSON 元素

    我正在开发一个 Android 应用程序 它使用 Android Retrofit 发送 JSON 它将 POJO 类转换为 JSON 它工作正常 但我需要在发送 JSON 时忽略 POJO 类中的一个元素 有谁知道 Android Ret
  • 在 linux ubuntu 中使用 CPAN 时,我应该使用 sudo / 作为 root 或作为我的默认用户运行它

    我收到这样的错误 Running make install Prepending blib arch and blib lib of 17 build dirs to PERL5LIB for install ERROR Can t cre
  • 将 Markdown 转换为 HTML 的正则表达式

    如何编写正则表达式将 mark 转换为 HTML 例如 您可以输入以下内容 This would be italicized text and this would be bold text 然后需要将其转换为 This would be