C # Regex - trying to get all Tab characters enclosed in double quotes

In the end, I want to replace everything \tenclosed in " I'm currently on Regex101 trying various iterations of my regular expression ... This is 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 wrong! I need your help in grouping tab characters.

+4
source share
2 answers

Match double quotes with a simple expression "[^"]+"(if there are no escape sequences to account for) and replace tabs within matches only inside the 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 C # demo

+4
source

:

\"[^\"]*\"

-1

Source: https://habr.com/ru/post/1683540/


All Articles