【发布时间】:2017-04-26 23:48:16
【问题描述】:
我进行了广泛的搜索,但找不到简单的答案,而且我的正则表达式经验有限。我很感激一个简单的解决方案,请解释一下。
我有一个非常大的字符串,我需要替换其中的某些单词,如下所示:
示例:无论您在何处找到字符串“LINK-ABC”,都将其设为“LINK_ABC”。
我写了我的正则表达式匹配和替换字符串:
@"LINK-ABC", @"LINK_ABC" 并且成功了。
但是有几件事我没有意识到。 文件中可能有这样的词:
LINK-ABC-DEF LINK-ABC-GHI-JKL ...等等。
所以我得到“LINK_ABC-DEF”等(这不是我想要的;这应该保持不变......)
一旦我意识到这个问题,我似乎真正想要的是只识别匹配的单词,并保留与其他单词组合的任何情况,保持不变。在我看来,如果我检查 Match 单词上的空格或句点,那就应该这样做,所以......
@"LINK-ABC[ |\\.]",@"LINK_ABC"
...现在我绊倒了。
示例字符串:
link-xxx 链接-aaa-sss 链接-xxx-bbb 链接-xxx 链接-xxx.
匹配/替换字符串:
link-xxx[ |\\.],link_xxx
结果字符串:
link_xxxlink-aaa-sss 链接-xxx-bbb 链接_xxxlink_xxx
替换是正确的,但是结尾的逗号或句点已被“吞噬”,因此结果字符串是错误的。
有没有一种方法可以匹配,如果它在空格上匹配,则替换将有一个空格,如果它在句点上匹配,则替换将有一个句点?我想我可以做 2 场单独的比赛,但我想增加我对 Regex 的理解,如果可能的话,做得更优雅。
【问题讨论】:
-
必须是正则表达式吗?
-
还有,这和 Python 有什么关系?
-
请将实际代码和测试字符串放入格式化块中,我的老眼无法解码内联乱码
-
@Mr, Zander:是的,它需要是正则表达式。作为一名程序员,我可以编写自己的解决方案并自己完成这个过程,但我认为重新发明轮子没有任何意义,我想了解更多信息,所以我很想看看 Regex-有经验的人可以想出。添加 Python 标签是因为有人告诉我 python 和 C# 非常相似,Python 社区中的某个人可能知识渊博。
-
@Mad Myche:这里是代码:OUTFile = Regex.Replace(OUTFile, matchstring, fixstr, RegexOptions.IgnoreCase);