C# Regex - Trying to get all the Tab character enclosed within double quotes

守給你的承諾、 提交于 2019-12-01 21:02:44

问题


In the end, I will want to replace all the \t that are enclosed within " I'm currently on Regex101 trying various iterations of my regex... This is the the closest I have so far...

originString = blah\t\"blah\tblah\"\t\"blah\"\tblah\tblah\t\"blah\tblah\t\tblah\t\"\t\"\tbleh\"
regex = \t?+\"{1}[^"]?+([\t])?+[^"]?+\"
\t?+       maybe one or more tab
\"{1}      a double quote
[^"]?+     anything but a double quote
([\t])?+   capture all the tabs
[^"]?+     anything but a double quote
\"{1}      a double quote

My logic is flawed! I need your help in grouping the tab characters.


回答1:


Match the double quoted substrings with a mere "[^"]+" regex (if there are no escape sequences to account for) and replace the tabs inside the matches only inside a match evaluator:

var str = "A tab\there \"inside\ta\tdouble-quoted\tsubstring\" some\there";
var pattern = "\"[^\"]+\""; // A pattern to match a double quoted substring with no escape sequences
var result = Regex.Replace(str, pattern, m => 
        m.Value.Replace("\t", "-")); // Replace the tabs inside double quotes with -
Console.WriteLine(result);
// => A tab here "inside-a-double-quoted-substring" some    here

See the C# demo




回答2:


you can use this :

\"[^\"]*\"

originally answered here



来源:https://stackoverflow.com/questions/45637882/c-sharp-regex-trying-to-get-all-the-tab-character-enclosed-within-double-quote

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!