我想替换角色的所有出现。在解决方案中的所有字符串
这些字符串如下所示:
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
答案 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,"_");
编辑:为正则表达式添加了全局标记。