Csharp/CSharp Tutorial/Regular Expression/Regular Expression
Содержание
- 1 Do a replace using the Regex
- 2 new Regex(<([^>]+)>[^<]*</(\1)>: for XML tag
- 3 new Regex((abc)*abc((abcd)|z)bc)
- 4 new Regex((abc)*)x(\1)
- 5 new Regex("(abc)|(xyz)*") 1
- 6 new Regex("((abc)|(xyz))*") 2
- 7 new Regex("((?:abc)|(?:xyz))*") 3
- 8 new Regex("^\\d+") 1
- 9 new Regex("\d+$") 2
- 10 new Regex("^\\d+$") 3
- 11 new Regex(?(^\d)^\d+$|^\D+$)
- 12 new Regex(^\d+$\n+, RegexOptions.Multiline)
- 13 new Regex(<[^>]+>[^<]*</[^>]+>): for XML tag
- 14 Regular Expresion Part
- 15 Reverse
- 16 Use Regular Expressions to split string
- 17 Using RegEx
Do a replace using the Regex
<source lang="csharp">using System; using System.Text.RegularExpressions; public class MainClass {
static void Main( string[] args ) { // Create regex to search for IP address pattern. string pattern = @"([01]?\d\d?|2[0-4]\d|25[0-5])\." + @"([01]?\d\d?|2[0-4]\d|25[0-5])\." + @"([01]?\d\d?|2[0-4]\d|25[0-5])\." + @"([01]?\d\d?|2[0-4]\d|25[0-5])"; Regex regex = new Regex( pattern ); Console.WriteLine( "Input given --> {0}", regex.Replace("192.168.199.1", "xxx.xxx.xxx.xxx") ); }
}</source>
Input given --> xxx.xxx.xxx.xxx
new Regex(<([^>]+)>[^<]*</(\1)>: for XML tag
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r1 = new Regex(@"<([^>]+)>[^<]*</(\1)>"); string s0 = "<M>S</M>"; string s1 = "<M>S</I>"; Console.WriteLine(r1.IsMatch(s0)); Console.WriteLine(r1.IsMatch(s1)); }
}</source>
True False
new Regex((abc)*abc((abcd)|z)bc)
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r = new Regex("(abc)*abc((abcd)|z)bc"); Console.WriteLine(r.IsMatch("abcabcabcdbc")); }
}</source>
True
new Regex((abc)*)x(\1)
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r1 = new Regex(@"((abc)*)x(\1)"); string s1 = "abcabcabcxabc"; Console.WriteLine(r1.IsMatch(s1) + "..." + r1.Match(s1).Value); }
}</source>
True...abcxabc
new Regex("(abc)|(xyz)*") 1
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r1 = new Regex("(abc)|(xyz)*"); Console.WriteLine(r1.IsMatch("abcxyzabcxyzxyzabcabcabc")); }
}</source>
True
new Regex("((abc)|(xyz))*") 2
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r2 = new Regex("((abc)|(xyz))*"); Console.WriteLine(r2.Match("abcxyzabcxyzxyzabcabcabc").Value); }
}</source>
abcxyzabcxyzxyzabcabcabc
new Regex("((?:abc)|(?:xyz))*") 3
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r3 = new Regex("((?:abc)|(?:xyz))*"); Console.WriteLine(r3.IsMatch("abcabcxyzabc")); }
}</source>
True
new Regex("^\\d+") 1
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r = new Regex("^\\d+"); string[] ss = new string[] { "123abc", "abc123", "123", "abc", "a123bc" }; foreach (string s in ss) Console.WriteLine(r.IsMatch(s)); }
}</source>
True False True False False
new Regex("\d+$") 2
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r = new Regex(@"\d+$"); string[] ss = new string[] { "123abc", "abc123", "123", "abc", "a123bc" }; foreach (string s in ss) Console.WriteLine(r.IsMatch(s)); }
}</source>
new Regex("^\\d+$") 3
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r = new Regex("^\\d+$"); string[] ss = new string[] { "123abc", "abc123", "123", "abc", "a123bc" }; foreach (string s in ss) Console.WriteLine(r.IsMatch(s)); }
}</source>
new Regex(?(^\d)^\d+$|^\D+$)
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r = new Regex(@"(?(^\d)^\d+$|^\D+$)"); Console.WriteLine(r.Match("cat too")); Console.WriteLine(r.Match("dag")); Console.WriteLine(r.Match("2else")); }
}</source>
cat too dag
new Regex(^\d+$\n+, RegexOptions.Multiline)
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r = new Regex(@"(^\d+$\n)+", RegexOptions.Multiline); Console.WriteLine(r.Match("987987\n129821").Value); }
}</source>
987987
new Regex(<[^>]+>[^<]*</[^>]+>): for XML tag
<source lang="csharp">using System; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using System.Reflection; public class MainClass{
public static void Main(){ Regex r0 = new Regex(@"<[^>]+>[^<]*</[^>]+>"); string s0 = "<M>S</M>"; string s1 = "<M>S</I>"; Console.WriteLine(r0.IsMatch(s0)); Console.WriteLine(r0.IsMatch(s1)); }
}</source>
True True
Regular Expresion Part
<source lang="csharp">using System; using System.Text; using System.Text.RegularExpressions; public class MainClass {
static void Main( string[] args ) { // Create regex to search for IP address pattern. string pattern = @"(?<part1>[01]?\d\d?|2[0-4]\d|25[0-5])\." + @"(?<part2>[01]?\d\d?|2[0-4]\d|25[0-5])\." + @"(?<part3>[01]?\d\d?|2[0-4]\d|25[0-5])\." + @"(?<part4>[01]?\d\d?|2[0-4]\d|25[0-5])"; Regex regex = new Regex( pattern ); Match match = regex.Match( "192.1.1.122" ); MatchEvaluator eval = new MatchEvaluator(IPReverse ); Console.WriteLine( regex.Replace("192.1.1.122", eval) ); } static string IPReverse( Match match ) { StringBuilder sb = new StringBuilder(); sb.Append( match.Groups["part4"] + "." ); sb.Append( match.Groups["part3"] + "." ); sb.Append( match.Groups["part2"] + "." ); sb.Append( match.Groups["part1"] ); return sb.ToString(); }
}</source>
122.1.1.192
Reverse
<source lang="csharp">using System; using System.Text; using System.Text.RegularExpressions; public class MainClass {
static void Main( string[] args ) { // Create regex to search for IP address pattern. string pattern = @"(?<part1>[01]?\d\d?|2[0-4]\d|25[0-5])\." + @"(?<part2>[01]?\d\d?|2[0-4]\d|25[0-5])\." + @"(?<part3>[01]?\d\d?|2[0-4]\d|25[0-5])\." + @"(?<part4>[01]?\d\d?|2[0-4]\d|25[0-5])"; Regex regex = new Regex( pattern ); Match match = regex.Match( "192.168.123.1" ); string replace = @"${part4}.${part3}.${part2}.${part1}" + @" (the reverse of $&)"; Console.WriteLine( regex.Replace("192.168.123.1", replace) ); }
}</source>
1.123.168.192 (the reverse of 192.168.123.1)
Use Regular Expressions to split string
<source lang="csharp">using System; using System.Text.RegularExpressions; class MainClass {
public static void Main() { string s = "A, B,cCCC, D"; Regex regex = new Regex(@" |, "); foreach (string sub in regex.Split(s)) { Console.WriteLine("Word: {0}", sub); } }
}</source>
Word: A Word: B,cCCC Word: D
Using RegEx
<source lang="csharp">using System; using System.Text; using System.Text.RegularExpressions;
public class Tester { static void Main() { string s1 = "One,Two,Three, Inc."; Regex theRegex = new Regex(" |, |,"); StringBuilder sBuilder = new StringBuilder(); int id = 1; foreach (string subString in theRegex.Split(s1)) { sBuilder.AppendFormat("{0}: {1}\n", id++, subString); } Console.WriteLine("{0}", sBuilder); } }</source>