C# Replace-跳过作为较长字符串一部分的字符串

C# Replace-跳过作为较长字符串一部分的字符串,c#,regex,replace,C#,Regex,Replace,我需要替换文本文件中的数字字符串列表。但是,如果该字符串是另一个数字字符串的一部分,则不应替换该字符串: 待替换字符串:111111 替换字符串:掩码 Text file: 111111 111111.text text text text111111 text text a111111 2111111 111111a 1111112 a111111a Expected result: MASKED MASKED.text text text textMASKED text text aM

我需要替换文本文件中的数字字符串列表。但是,如果该字符串是另一个数字字符串的一部分,则不应替换该字符串: 待替换字符串:111111 替换字符串:掩码

Text file:
111111
 111111.text text
text text111111 text text
a111111
2111111
111111a
1111112
a111111a

Expected result:
MASKED
 MASKED.text text
text textMASKED text text
aMASKED
2111111 -> Character 2 prevents masking
MASKEDa
1111112 -> Character 2 prevents masking
aMASKEDa
这是我的代码:

inputText = Regex.Replace(inputText, "(?<![0-9])" + stringToMask + "(?<![0-9])", "####MASKED####");

inputText=Regex.Replace(inputText,”(?您可以使用MatchEvaluator执行按条件替换。要决定是否替换预制件,您可以添加第一个和最后一个字母以匹配模式,按此模式拆分字符串并分析第一个和最后一个符号。

您可以使用MatchEvaluator执行按条件替换。要决定是否替换预制件,您可以添加第一个和最后一个字母要匹配模式,请按此模式拆分字符串,并分析第一个和最后一个符号。

如果我正确理解您的问题,以下正则表达式应该可以工作:

(?<!\d)111111(?!\d)

如果我正确理解您的问题,以下正则表达式应该可以工作:

(?<!\d)111111(?!\d)

第二个(?sh54说的话。他应该得到这个分数:)@Henk,不,你不能。
\D
应该是
[^0-9]
属于后看断言
(?.sh54-这很有效。如果你创建了它,我很乐意选择你的答案。第二个(?sh54说的话。他应该得到这个分数:)@亨克,不行。
\D
将是
[^0-9]
属于查找后断言
(?.sh54-这很有效。如果您创建了它,我很乐意选择您的答案。另外,添加Regexp.Escape到您的模式中,它可以包含内部的特殊符号。我正在研究这一点,因为我有兴趣添加更多要替换的验证。我希望有一个预定义字符串列表,这些字符串的存在将抑制替换操作。例如,在字符串“amount=111111”中,使用“amount=”应该会停止匹配。我查看了您发布的示例和其他一些示例,不明白如何执行。代理只接受匹配,因此它无法检查前面的内容。请使用Regex.Replace(inputText,“.?”+stringToMask+”、“##;您将在begging和end中使用1个额外的符号获得所需的匹配。然后您可以将字符串拆分为11111,第一个项目将是第一个符号,第二个是最后一个。当您完成解析时,您应该添加第一个和最后一个符号以替换字符串。谢谢。不幸的是,这意味着我无法将其用于上面解释的目的。还要添加正则表达式p、 Escape to you模式,其中可能包含特殊符号我一直在研究这个问题,因为我有兴趣添加更多要替换的验证。我希望有一个预定义字符串的列表,这些字符串的存在将抑制替换操作。例如,在字符串“amount=111111”中“,使用'amount='应该会停止匹配。我查看了您发布的示例和其他一些示例,不明白如何完成。代理只接受匹配,因此无法检查之前的内容。请使用Regex.Replace(inputText,.?“+stringToMask+”,“############”;在“乞讨”和“结束”中,您将使用1个额外的符号获得所需的匹配。然后您可以将字符串拆分为11111,第一个项目将是第一个符号,第二个是最后一个。当您完成解析时,您应该添加第一个和最后一个符号以替换字符串。谢谢。不幸的是,这意味着我无法将其用于上面解释的目的。