C# Regex.Replace():获取值

2024-04-23

我正在解析 BB 代码图像标签:

[img]http://imagesource.com[/img]

我正在使用以下 Replace() 函数:

Regex.Replace(msg, @"\[img\]([^\]]+)\[\/img\]", @"<img src=""$1"" border=""0"" />", RegexOptions.IgnoreCase);

我需要在解析时获取 URL。我需要知道“$1”的价值。是否可以? Regex 类以某种方式将“$1”字符串替换为我需要的值,因此必须有一种方法来获取它。


听起来您正在寻找Replace具有接受 MatchEvaluator 的重载的方法。可以找到该方法的 MSDN 页面here http://msdn.microsoft.com/en-us/library/ms149475.aspx.

试试这个:

string input = "[img]http://imagesource.com[/img]";
string pattern = @"\[img]([^\]]+)\[\/img]";
string result = Regex.Replace(input, pattern, m =>
    {
        var url = m.Groups[1].Value;
        // do something with url here
        // return the replace value
        return @"<img src=""" + url + @""" border=""0"" />";
     },
    RegexOptions.IgnoreCase);

这使用多语句 lambda 来简化组的工作并在返回替换值之前执行更多逻辑。当然,你也可以这样做:

string result = Regex.Replace(input, pattern,
    m => @"<img src=""" + m.Groups[1].Value + @""" border=""0"" />",
    RegexOptions.IgnoreCase);

在上述情况下,不需要return但它只是返回原始字符串而不进行额外的评估。您可以添加一些三元运算符并添加该逻辑,但它看起来会很混乱。多语句 lambda 更加简洁。如果它太大或将在其他中重用,您可以考虑用自己的方法将其分解,如前面提到的 MSDN 链接所示Regex.Replace努力。

顺便说一句,我还通过删除转义符稍微简化了您的模式]。仅有开口[需要逃脱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# Regex.Replace():获取值 的相关文章

随机推荐

  • 为什么 receive_boot_completed 在我的设备上不起作用?

    我正在开发一些需要使用的应用程序receive boot completed重新启动以重置一些警报 它可以在模拟器和 Samsung tab 2 10 1 上正常工作 但它不能在我的 android 版本 2 2 1 的 Galaxy Mi
  • jQuery/javascript 用户单击和以编程方式单击复选框的不同行为

    有点难以解释 所以我设置了一个 jsFiddlehere http jsfiddle net BCECy 基本上 当用户单击复选框时 我会触发一些行为 在另一个地方 我尝试以编程方式单击复选框 我需要看到完全相同的行为 它不起作用 似乎与单
  • Vim 中每行末尾的美元符号(“$”)是什么

    我对 Vim 还比较陌生 每当我启动 Vim 时使用vim LearnRuby rb 每行都会出现一个美元符号 Why set nolist 将关闭当前缓冲区的特殊字符 例如制表符显示为 I和行尾字符显示为 然而 如果它在你跑步时始终如一地
  • .hgignore 语法仅忽略文件,而不忽略目录?

    我有一个我似乎无法理解的问题 我在 Windows 上使用 TortoiseHg 版本 0 7 5 但在 Linux 上我遇到了同样的问题 这里是 My hgignore file syntax regexp 我想要实现的是将 hg 存储库
  • PHP - UPLOAD_ERR_NO_TMP_DIR

    我正在使用 Cbeyond www cbeyond com 你们中的一些人可能熟悉它们 作为启用 PHP 的虚拟主机 当我检查如下时 我的 PHP 上传功能遇到问题 error FILES uploadedfile error echo e
  • Graphql 字段在类型上不存在

    浏览完 Graphql 的文档后 我开始在一个玩具 Rails reactJS 项目上实现它 这些项目允许用户通过设备登录 然后访问显示艺术家列表的虚拟 艺术家路径 一切似乎都工作正常 直到我尝试使用 React 应用程序中的 GraphQ
  • 对象动画师不删除更新监听器android

    美好的一天 我有一个场景 这个半正常的对象动画师不断地反复触发 导致堆增长 当然在某些时候还会出现内存不足问题 这是如何进行的 我为这样的彩虹动画制作了静态方法 public static ObjectAnimator startRainb
  • Spring @Transactional 和 Hibernate @LockMode 注释如何关联

    我想知道事务和锁之间的关系 更具体地说 Spring 的情况如何 Transactional与Hibernate的LockMode有关 https docs jboss org hibernate orm 4 0 devguide en U
  • 绘制java类的依赖关系图

    嘿嘿 我正在寻找像 JDepend 这样的工具来为 java 类文件绘制图表 JDepend 看起来很好 但它没有从 deps 中解析 deps 也许我只是缺少一些特殊选项 直接输出为 dot 格式或图像会很好 谢谢 你可以试试Java依赖
  • 使用 JavaScript 命名空间是否存在任何危险?

    创建 JavaScript 命名空间时是否有任何危险 警告应该注意 我们的项目相当庞大 我们正在运行大量 JavaScript 文件 超过 20 个 预计还会更多 如果不使用命名空间 就不可能实现任何代码可维护性 因此我们像这样实现它们 v
  • 如何只在当前行进行搜索和替换?

    I see 如何在特定行中搜索和替换 https stackoverflow com questions 17319557 search and replace in vim in specific lines 按行号指定 以及如何使用当前
  • 按升序/降序快速对 data.table 进行排序

    我有一个大约有 300 万行和 40 列的 data table 我想按组内的降序对该表进行排序 如以下 sql 模拟代码 sort by ascending Year ascending MemberID descending Month
  • 为什么 C# 和 C 中 `j= ++i + ++i;` 的输出不同?

    int i 1 j j i i printf d j 该程序的输出是6但是当我对 C 使用相同的逻辑时 输出是5 我想知道为什么相同的逻辑在两种不同的语言中表现不同的原因 C 中的规则是 严格从左到右评估每个子表达式 所以 j i i is
  • JavaScript 在模态窗口关闭时停止 HTML5 视频播放

    我在模态窗口上有一个 html5 视频元素 当我关闭窗口时 视频继续播放 我是 JS 的新手 有没有一种简单的方法将视频播放停止功能与窗口关闭按钮绑定 下面是我的html页面
  • protoc-gen-go:无法确定“simple.proto”的 Go 导入路径

    我有包含以下内容的简单原型文件 syntax proto3 package main message Person string name 1 int32 age 2 我正在尝试使用 protoc 为其生成 go 代码 我跑 protoc
  • 在 django 内联模型管理中,如何用值预填充额外字段

    class MyCustomInline admin TabularInline min num 1 extra 0 fields matcher param0 param1 model MyModel form MyCustomInlin
  • 从 Excel 2007 查询 SQL 并返回多个值

    我正在尝试获取少量数据 即 Excel 中的大约 200 个字段 并使用每个项目的 where 子句中的该字段从 SQL 检索数据 TABLE ID Name Phone 1 Test1 1234 2 Test2 1235 3 Test3
  • Android检测真实录制,MediaRecorder有延迟

    我想将手机中的数据与录制视频的经过时间同步 我想获取有关录制视频所用时间的信息 以毫秒为单位 我尝试通过以下方式解决它 1 自己跑步计时 伪 mMediaRecorder start start recording startTime Sy
  • 使用javascript在文本中插入链接而不替换div的整个内容

    我正在编写一个小部件 用于在指定的 content div 中搜索特定关键字 以下是我最初使用 jQuery 简化版 进行设置的方法 设置一个等于内容 html 的变量 var content content html 使用一些正则表达式来
  • C# Regex.Replace():获取值

    我正在解析 BB 代码图像标签 img http imagesource com img 我正在使用以下 Replace 函数 Regex Replace msg img img img src border RegexOptions Ig