使用OpenXML和Regex在Word Docx中查找和替换撇号(')的问题 - c#

Word似乎使用与Visual Studio不同的撇号字符,并且在使用Regex时引起了问题。

我正在尝试使用OpenXML在C#中编辑一些Word文档。我基本上是用公司名称代替[[COMPANY]]。直到我到达名称以s结尾的公司的极端案例为止,这一直非常顺利。我最终遇到问题s,有时它会创建一个s。

例:
公司名称:Simmons
Doc中的文字:[[COMPANY]]的业务是汽车。
结果:Simmons的业务是汽车。

这是不正确的英语。

我应该可以像使用[[COMPANY]]一样使用基本的查找和替换,但是它不起作用。

            Regex apostropheReplace = new Regex("s\\'s");
            docText = apostropheReplace.Replace(docText, "s\'"); 

这不是。似乎Word使用的字符和撇号(')与我在Visual Studio中使用键盘上的键时创建的标准字符不同。如果我使用键盘写了一个查找并替换它,将无法使用,但是如果我复制并粘贴Word中的撇号,它将起作用。

            Regex apostrophyReplace = new Regex("s\\’s");
            docText = apostrophyReplace.Replace(docText, "s\'"); 

注意第二个正则表达式中的不同字符。我对为什么这样做感到困惑,并且还想知道这样做是否正确。我尝试使用“'”,但这不起作用。我只是想知道是否使用从Word复制的字符是执行此操作的正确方法,并且是否有办法做到这两个字符都能正常工作,所以我对使用其他方法创建的文档没有问题程序。

参考方案

发生这种情况的原因是因为它们是不同的字符。

键入某些标点符号后,Word实际上会对其进行更改,以使其具有正确的倾斜度或改善显示效果。

之前我遇到过同样的问题,我将其用作正则表达式:[\u2018\u2019\u201A\u201b\u2032']

因此,基本上将代码修改为:

Regex apostropheReplace = new Regex("s\\[\u2018\u2019\u201A\u201b\u2032']s");
docText = apostropheReplace.Replace(docText, "s\'")

我发现这些是使用的单引号和撇号的五个最常见类型。

如果遇到同一问题,双引号也可以使用:[\u201C\u201D\u201E\u201F\u2033\u2036\"]

将字符串分配给numpy.zeros数组[重复] - python

This question already has answers here: Weird behaviour initializing a numpy array of string data                                                                    (4个答案)         …

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript

我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

T-SQL等价的正则表达式'\ b' - c#

我正在将利用regex的CLR函数转换为SQL函数。我知道SQL Server并不完全支持正则表达式,但是我只需要一种情况就可以搜索单词。搜索字段值:{"Id":1234, "Title": "The quick brown"}.NET中的正则表达式模式:'\b' + '…