C# regex fails to split string by pipe delimiter [duplicate] - c#

This question already has answers here:
What special characters must be escaped in regular expressions?
(13 answers)
How to globally replace pipe symbol "|" in string
(5 answers)
Closed 4 years ago.
string query = "A|B";
The output of the next 2 lines are equal to "%A%|%B%" whereas "A%B" is expected!
query = Regex.Replace(query, "|", "%");
query = Regex.Replace(query, #"|", "%");
Why?

The | is a special character of regexes, it means "or". You have to escape it.
query = Regex.Replace(query, #"\|", "%");

Related

Replace RX123456789 with RX********* using REGEX [duplicate]

This question already has answers here:
mask all digits except first 6 and last 4 digits of a string( length varies )
(13 answers)
Closed 4 years ago.
I'm using C# to create a pattern in order to replace all the occurrences in a string from
RX123456789 into RX*********
I have tried various patterns without success. I'm kinda new regarding Regular Expression.
I appreciate your help.
Use this Regex:-
string data = "RX123456789";
var resultString = Regex.Replace(data, #"[0-9]", "*");
If you need * of number only When RX is present then use this logic:-
string data = "RX123456789";
var resultString="";
if (new Regex("RX([0-9]+)").IsMatch(data))
{
resultString = Regex.Replace(data, #"[0-9]", "*");
}

Use " in regex expression in C# [duplicate]

This question already has answers here:
Escape double quotes in a string
(9 answers)
Closed 5 years ago.
I am trying to get the text inside "" in:
_["Some text to get"]
So I tried the following in C#:
Regex pattern = new Regex(#"_\["(.*?)\"]");
This does not compile because of the " inside the regex expression.
The regex expression seems to work: https://regexr.com/3h076
How to fix this?
Why not just append the inside of the regex to make a larger string
_["Some text to get"]
Regex p = new Regex(#"_\[" + " (.*?)" + "\"]");

Regex to split string into groups [duplicate]

This question already has answers here:
How do I split a string by a multi-character delimiter in C#?
(10 answers)
Closed 4 years ago.
How can I match this string in c# using regex so it returns 4 groups per line?
1 or more digits|one or more letters|one or more letters|one ore more X-Digit(s)\n
Example:
123|ABC|ABC|X-1;X-12;X-13
123|ABC|ABC|X-1
I've tried this
\d+\|(A-Z)\|(A-Z)\|(X-)d+
Why shooting with canons at birds?=! If you could simply use the String.Split method to achieve that
string test = "123|ABC|ABC|X-1;X-12;X-13";
string [] groups = test.Split('|');
it will return an array of elements that were separated by a |

Extract part of the string [duplicate]

This question already has answers here:
How do I split a string by a multi-character delimiter in C#?
(10 answers)
Closed 7 years ago.
I have thousands of lines of string type data, and what I need is to extract the string after AS. For example this line:
CASE END AS NoHearing,
What I want would be NoHearing,
This line:
CASE 19083812 END AS NoRequset
What I need would be NoRequset
So far I have tried couple ways of doing it but no success. Can't use .split because AS is not Char type.
If this will be the only way that AS appears in the string:
noRequestString = myString.Substring(myString.IndexOf("AS") + 3);
Using Regex I extract all between the AS and a comma:
string data = #"
CASE END AS NoHearing,
CASE 19083812 END AS NoRequset
";
var items = Regex.Matches(data, #"(?:AS\s+)(?<AsWhat>[^\s,]+)")
.OfType<Match>()
.Select (mt => mt.Groups["AsWhat"])
.ToList();
Console.WriteLine (string.Join(" ", items)); // NoHearing NoRequset

Split a Pascal-case string into logical set of words [duplicate]

This question already has answers here:
Closed 14 years ago.
I would like to take a pascal-cased string like "CountOfWidgets" and convert it into something more user-friendly like "Count of Widgets" in C#. Multiple adjacent uppercase characters should be left intact. What is the most efficient way to do this?
NOTE: Duplicate of .NET - How can you split a "caps" delimited string into an array?
Don't know about efficient but at least it's terse:
Regex r = new Regex("([A-Z]+[a-z]+)");
string result = r.Replace("CountOfWidgets", m => (m.Value.Length > 3 ? m.Value : m.Value.ToLower()) + " ");

Categories