Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
330 views
in Technique[技术] by (71.8m points)

c# - Replace all occurrences of the Tab character within double quotes

In the end, I will want to replace all the 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"blahblah""blah"blahblah"blahblahblah""bleh"
regex = ?+"{1}[^"]?+([])?+[^"]?+"
?+       maybe one or more tab
"{1}      a double quote
[^"]?+     anything but a double quote
([])?+   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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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 tabhere "insideadouble-quotedsubstring" somehere";
var pattern = ""[^"]+""; // A pattern to match a double quoted substring with no escape sequences
var result = Regex.Replace(str, pattern, m => 
        m.Value.Replace("", "-")); // Replace the tabs inside double quotes with -
Console.WriteLine(result);
// => A tab here "inside-a-double-quoted-substring" some    here

See the C# demo


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...