正则表达式替换。之间“

时间:2018-03-21 16:12:04

标签: regex visual-studio

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

这些字符串如下所示:

string sentence = "Hello world. Good bye world";

我希望他们看起来像这样:

string sentence = "Hello world_ Good bye world";

我想用正则表达式来做。我尝试了与此处描述的类似方法:Regular expression to extract text between square brackets我在这里阅读了文档https://docs.microsoft.com/en-us/visualstudio/ide/using-regular-expressions-in-visual-studio,但我无法弄清楚如何继续。

编辑:我正在使用Visual Studio 2017

4 个答案:

答案 0 :(得分:1)

(?<=(?<="|[\.](?<=".*))[^\.]*?)(\.)(?=.*")

看起来这种模式在.NET正则表达式中起作用,因为引擎支持可变长度看后面。 Demo(单击[table]和[context]选项卡以检查替换结果)

[测试字符串]

..string .sentence. = .".Hell.o world.. Good. bye. world.".;.

用“_”替换捕获的角色

..string .sentence. = ."_​Hell_​o world_​_​ Good_​ bye_​ world_​".;. 
  • (\。):捕获目标。(文字句点(。))

  • (?=。*“):在捕获一段时间后引用存在。

  • (?&lt; =(?&lt; =“| [\。](?&lt; =”。*))[^ \。] *?):前面的引文存在且可能存在句点在捕获期间之前,任何非点字符前面都有一个引号

答案 1 :(得分:0)

Visual Studio 2015编辑/查找和替换。你可能会发现更多的限制,但应该让你开始。

找到什么:

(string\s[^\s]+\s+=\s+"[^\.]+)(\.)(\s*[^"]+")

替换为:

$1_$3

答案 2 :(得分:0)

您可以执行以下操作:

(?<=(?<!\\)"(\"|[^"])*)\.(?=(\"|[^"])*")

...它基本上查找任何字符前面的零或更多的句点,而不是引号或以反斜杠开头的引号,然后是一个没有前导反斜杠的引号。同一时期之后是零或更多的任何字符,而不是引号或引号前面加一个反斜杠,然后是一个前面没有反斜杠的引号。

请记住,这不是万无一失的 - 它不处理逐字字符串(即@&#34;&#34;)。您可以调整它以适应这种情况。

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

答案 3 :(得分:-1)

一个简单的表达式,如:

\.

应该做的伎俩。

尝试使用:

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

编辑:为正则表达式添加了全局标记。