如果一行中包含特定单词,使用正则表达式替换整行

6

我有一个Word文档,其中包含一些机密信息,例如:它有NIC:343434343。

我需要一个正则表达式,它能够执行以下操作:

如果在某一行中找到NIC,则应该用指定的文本替换整行。

3个回答

10

默认情况下,点号不匹配换行符,因此您可以简单地使用

.*NIC.*

要查找包含“NIC”的行。您可以使用以下表达式:

string result = Regex.Replace(originalString, ".*NIC.*", "replacement string");

你可以在ideone.com上看到它的工作情况。


那会匹配整个文本块,而不仅仅是一行。 :o - Gaijinhunter
1
@Issun:为什么会呢?除非指定了RegexOptions.Singleline,否则“.”不会匹配“\n”。 - Jens
它会出现这个错误:“匹配项包含一个或多个特殊字符或断点字符,无法替换”。 - Abdul Rauf
@Abdul:我从未见过那个错误。你能否在你的问题中添加一些示例文本,以便在使用正则表达式时出现该错误? - Jens
1
@Abdul:你遇到的错误不是来自于正则表达式,而是来自于Aspose.Words。请参考:http://www.aspose.com/community/forums/thread/36872/the-match-includes-one-or-more-special-or-break-characters-and-cannot-be-replaced.aspx - porges
显示剩余4条评论

8
使用起始和结束标记符号:
请使用起始和结束标记符号。
^.*NIC.*$

^ 表示匹配行的起始位置,$ 表示匹配行的结束位置。如果一行中至少出现一次 "NIC",则整行都会被匹配。


1
^$ 只匹配整个字符串的开头和结尾,除非指定了 RegexOptions.Multiline。 - Jens

3

使用这个正则表达式:(?m-i)^.*?NIC.*$。它启用多行选项并禁用忽略大小写选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接