Regex 要替换的正则表达式。介于;

Regex 要替换的正则表达式。介于;,regex,visual-studio,Regex,Visual Studio,我要替换角色的所有出现。在解决方案中的所有字符串中 这些字符串如下所示: string sentence = "Hello world. Good bye world"; string sentence = "Hello world_ Good bye world"; 我希望他们都像这样: string sentence = "Hello world. Good bye world"; string sentence = "Hello world_ Good bye world"; 我想

我要替换角色的所有出现。在解决方案中的所有字符串中

这些字符串如下所示:

string sentence = "Hello world. Good bye world";
string sentence = "Hello world_ Good bye world";
我希望他们都像这样:

string sentence = "Hello world. Good bye world";
string sentence = "Hello world_ Good bye world";
我想用正则表达式来做。我尝试了与这里描述的类似的方法:我阅读了这里的文档,但我不知道如何继续


编辑:我正在使用Visual Studio 2017

一个简单的表达式,如:

\.
我们应该做到这一点

尝试使用以下方法:

String sentence = "Hello world. Good bye world";
sentence.replaceAll(\\.\g,"_");

编辑:将全局标志添加到正则表达式。

Visual Studio 2015编辑/查找并替换。您可能会发现进一步的限制,但应该开始

在“查找内容”中:

(string\s[^\s]+\s+=\s+"[^\.]+)(\.)(\s*[^"]+")
替换为:

$1_$3

您可以执行以下操作:

(?<=(?<!\\)"(\"|[^"])*)\.(?=(\"|[^"])*")
(?
…基本上查找任何字符的零个或多个句点,而不是引号或引号前有反斜杠,然后是引号前没有前导反斜杠。同一句点后有零个或多个字符,而不是引号或引号前有反斜杠,然后是引号后没有前导反斜杠被反斜杠划破的

请记住,这并不是万无一失的——它不处理逐字字符串(即@“”)。您可能会调整它以适应这种情况

此外,替换字符只是要更改为的字符(即下划线)

将捕获的字符替换为“\u1”

  • (\):捕获目标。(文字周期()

  • (?=.*):引用捕获期间后是否存在


  • (?什么版本的Visual Studio?较旧版本的Visual Studio支持不同的正则表达式语法。Visual Studio 2017如果引号之间有多个“.”,我认为您不会有一个全面的解决方案。这不会在解决方案中的所有字符串中考虑
    ..string .sentence. = ."_​Hell_​o world_​_​ Good_​ bye_​ world_​".;.