帮助简化几个正则表达式。

| 下面,我有两个对某些文本进行操作的正则表达式: 假设键= \“旧\”,值= \“新\”
text = Regex.Replace(text,
    \"\\\\.\" + change.Key + \",\",
    \".\" + change.Value + \",\"
    );
text = Regex.Replace(text,
    \"\\\\.\" + change.Key + \";\",
    \".\" + change.Value + \";\"
    );
因此,\“。old,\”和\“。old; \”将分别更改为\“。new,\”和\“。new; \”。 我确定可以将其缩短为一个正则表达式。我该怎么做,以便仅当逗号和分号位于变量的末尾时才更改字符串?例如,我不希望\“。oldQ \”更改为\“。newQ \”。谢谢!     
已邀请:
.NET使用$进行反向引用:
text = Regex.Replace(text,
    @\"\\.\" + change.Key + \"([,;])\",
    \".\" + change.Value + \"$1\");
    
意料之外:
text = Regex.Replace(text, @\"\\.(old|new),\",@\"\\.\\1;\");
    
您只想更改中间部分,所以:
text = Regex.Replace(text,
    \"\\\\.\" + change.Key + \"(,|;)^\",   // mark a group using \"()\" for substitution...
    \".\" + change.Value + \"\\1\"       // use the group (\"\\1\")
    );
    
我喜欢使用\\ b,像这样:
text = Regex.Replace(text, @\"\\.\" + change.Key + @\"\\b\", \".\" + change.Value);
它可以匹配关键字,后跟其他定界符,不仅限于\“,\”和\“; \”,但在您的情况下仍然可以使用。     

要回复问题请先登录注册