在 C# 中使用正则表达式突出显示单词列表

2023-12-02

我有一些包含缩写的网站内容。我有该网站公认的缩写列表及其解释。我想创建一个正则表达式,它允许我用一些标记替换内容中找到的所有可识别的缩写。

例如:

内容:


This is just a little test of the memb to see if it gets picked up. 
Deb of course should also be caught here.  

缩写:


memb = Member; deb = Debut;   

result:


This is just a little test of the [a title="Member"]memb[/a] to see if it gets picked up. 
[a title="Debut"]Deb[/a] of course should also be caught here.  

(为了简单起见,这只是示例标记)。

Thanks.

EDIT:

CraigD 的答案已经差不多了,但是还存在问题。我只想匹配整个单词。我还想保持每个被替换的单词的正确大小写,这样 deb 仍然是 deb,Deb 仍然是原文中的 Deb。例如,这个输入:



This is just a little test of the memb. 
And another memb, but not amemba. 
Deb of course should also be caught here.deb!
  

首先你需要Regex.Escape()所有输入字符串。

然后您可以在字符串中查找它们,并用您想要的标记迭代地替换它们:

string abbr      = "memb";
string word      = "Member";
string pattern   = String.Format("\b{0}\b", Regex.Escape(abbr));
string substitue = String.Format("[a title=\"{0}\"]{1}[/a]", word, abbr);
string output    = Regex.Replace(input, pattern, substitue);

编辑:我问是否有一个简单的String.Replace()还不够 - 但我可以明白为什么正则表达式是可取的:您可以使用它来强制“整个单词”替换,只需创建一个使用单词边界锚的模式。

您甚至可以从所有转义的输入字符串构建单个模式,如下所示:

\b(?:{abbr_1}|{abbr_2}|{abbr_3}|{abbr_n})\b

然后使用比赛评估员找到合适的替代品。这样您就可以避免多次迭代输入字符串。

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

在 C# 中使用正则表达式突出显示单词列表 的相关文章

随机推荐

  • 对 geom_line 和 x 轴之间的区域进行着色

    我有两张图显示供给和需求 在一张图中我从供给中减去了需求以显示由此产生的不对称性 我想对 x 轴和不对称负值部分之间的区域进行阴影处理 以显示缺陷的程度 我目前使用以下代码 plot asymmetry lt ggplot data df
  • 如何获取高DPI系统下的真实屏幕分辨率?

    因此 Delphi 程序不支持 DPI 直到最近我需要真实的屏幕分辨率时 这才让我感到困扰 当 更容易阅读屏幕上的内容 为 150 时 Screen Width 报告错误的分辨率 在具有高 DPI 的计算机中 一些建议是使应用程序具有高 D
  • 为什么在检查 textView 文本是否以预期字符串结尾(省略时)时 android espresso 测试失败

    我有一个 android 测试 检查应用 android ellipsize end 时外部文本消息是否被截断并以三个点结尾 我不知道为什么测试失败 尽管活动中呈现的文本格式正确 Test fun when errorMessage is
  • 为什么 Java 中有数组和数组

    我遇到过这两个文档 该类的 Java 文档Array 该类的 Java 文档Arrays 我想知道这两个类之间有什么区别 它们都提供了一组不同的静态方法 但为什么它们是分开的呢 更深层次的区别是什么 它们之间的关系与普通数组实例之间的关系是
  • stage 关键字是否在 YAML 文件中的 Azure DevOps 中定义构建或部署管道

    我想知道我们是否考虑这个 YAML 代码块 如果它已经被视为构建和发布管道 或者我们需要定义阶段来表征它 下面的代码可以工作 但运行时看不到各个阶段 然而 在这种情况下 它会构建并部署到 Azure 所以这就是我问的原因 我正在寻找正确的术
  • 限制线程数

    我有一个包含我要下载的项目的列表 我使用 for 循环来迭代列表 对于此列表中的每个项目 我启动一个引用该项目的新线程 我的问题是我想同时限制 maxDownload for int i downloadList Count 1 i gt
  • 在 XMPPFramework 和 Swift 2 中未调用 didReceiveInvitation()

    我正在创建聊天应用程序 例如Whatsapp 我已经成功编写了文本聊天 图像 音频 视频传输的功能 现在我正在创建多用户聊天 经过长时间的研发 我问这个问题 请告诉我我的代码中做错了什么 我已经遵循了所有这些教程 但运气不佳 https g
  • 在 Java Graphics2D 中,文本如何在矩形上居中对齐?

    在这段代码中 我有一个窗口 其中一个角落有一个蓝色框 我需要在此框上对齐文本中心 public class drawComponent extends JComponent public void paintComponent Graphi
  • Keras 不平衡数据集的多重损失

    My Model 我建立了一个暹罗网络 它有两个输入和三个输出 所以我的损失函数是 total loss alpha loss1 alpah loss2 1 alpah loss3 loss1 and loss2 is categorica
  • Google 搜索 API - 仅返回 4 个结果

    经过大量实验和谷歌搜索 以下 Python 代码成功调用了 Google 的搜索 APi 但只返回 4 个结果 在阅读了 Google 搜索 API 文档后 我认为 start 会返回其他结果 但这并没有发生 有人可以指点一下吗 谢谢 Py
  • 有没有办法确定 Apple Watch 和 iPhone 之间的粗略距离?

    我知道在 Apple Watch 发布之前这个问题可能无法解答 但有人知道是否有办法确定 Apple Watch 和 iPhone 之间的粗略距离 以英尺为单位 目前 WatchKit框架不会向您提供此类信息 因为第三方应用程序的功能仍然相
  • WCF 64 位不工作

    我正在尝试开发一个在 64 位环境中运行的简单 WCF 服务 我在Windows 7下启动VS2010 新解决方案 gt WCF 项目 gt 运行 gt 工作正常 一旦我更改项目的属性以使其在 64 位中编译 运行它就会抛出以下异常 Cou
  • 将多个 csv 文件平均为 r 中的 1 个平均文件

    我有大约 300 个风速 温度 压力等的 csv 文件 每列都是 2007 年到 2012 年的不同时间 每个文件都来自不同的位置 我想将所有文件合并为一个 即所有 300 个文件的平均值 因此 新文件中每个文件的行数和列数都相同 但每个单
  • Android - 清除 Facebook 访问令牌

    我有一个SettingsActivity其中有多种选项 包括查找 Facebook 好友和注销 因此 当用户选择查找她的 Facebook 好友时 她将被发送到另一个活动 我让她使用她的 Facebook 帐户登录并保存她的访问令牌 然后
  • 当容器是超链接时,Flex 图像不会随屏幕尺寸缩小

    有人可以告诉我这是否是 Flexbox 的一个未记录的错误 或者我只是做错了 我有 3 个图像在 div 容器内排成一行 这对人们来说很简单 如果没有任何超链接 所有 3 个图像都会按其应有的方式完美缩小 div style width 1
  • 有没有适用于 Java Swing 的优秀且免费的日期和时间选择器? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有没有适用于 Java Swing 的优秀且免费的日期和时间选择器 有很多可用的日期选择器 但没有日期和时间选择器 这是迄今为止我遇到的最接近的 寻找日期和时间选择器 Anybody
  • iOS 在 iOS 6 中隐藏标签栏会产生黑条(iOS 6 的修复会破坏 iOS 7!)

    我有一个选项卡式应用程序 在一个选项卡中有一个UIWebView 当我将设备旋转到横向时 我已经制作了UIWebView全屏显示 同时隐藏状态和标签栏 我已经在 iOS 6 中工作了 最初在旋转和隐藏选项卡栏时 它会在选项卡栏所在的位置留下
  • Spring引导redirectAttributes.addFlashAttribute不保留立即重定向中的值

    我有一个实现 GET POST GET 重定向模式的控制器类 我尝试在 POST 请求中使用 addFlashAttribute 并重定向到 GET 但 GET 中的模型对象不包含设置值 这是我的代码 Controller RequestM
  • 如何以编程方式更改 Eclipse 首选项

    应该采用什么方法来更改 Eclipse 首选项 它们存储在
  • 在 C# 中使用正则表达式突出显示单词列表

    我有一些包含缩写的网站内容 我有该网站公认的缩写列表及其解释 我想创建一个正则表达式 它允许我用一些标记替换内容中找到的所有可识别的缩写 例如 内容 This is just a little test of the memb to see