我需要替换文本文件中的数字字符串列表。但是,如果字符串是另一个数字字符串的一部分,则不应替换它: 要替换的字符串:111111 替换字符串:MASKED
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####");
此代码只是跳过所有内容并且不执行任何屏蔽。
答案 0 :(得分:1)
您可以使用MatchEvaluator http://www.dotnetperls.com/regex-replace执行条件替换。要决定是否更换预制件,您可以添加第一个和最后一个字母以匹配模式,按此模式分割字符串并分析第一个和最后一个符号。
答案 1 :(得分:0)
如果我正确理解您的问题,以下正则表达式应该有效:
(?<!\d)111111(?!\d)
它同时使用negative lookbehind assertion and a negative lookahead assertion。
输出:
MASKED
MASKED.text text
text textMASKED text text
aMASKED
2111111
MASKEDa
1111112
aMASKEDa