Csharp/CSharp Tutorial/Regular Expression/Regular Expression — различия между версиями

Материал из .Net Framework эксперт
Перейти к: навигация, поиск
м (1 версия)
 
м (1 версия)
 
(нет различий)

Текущая версия на 12:17, 26 мая 2010

Do a replace using the Regex

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") );
    }
}
Input given --> xxx.xxx.xxx.xxx

new Regex(<([^>]+)>[^<]*</(\1)>: for XML tag

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));
   }
}
True
False

new Regex((abc)*abc((abcd)|z)bc)

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"));
   }
}
True

new Regex((abc)*)x(\1)

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);
   }
}
True...abcxabc

new Regex("(abc)|(xyz)*") 1

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"));
   }
}
True

new Regex("((abc)|(xyz))*") 2

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);
   }
}
abcxyzabcxyzxyzabcabcabc

new Regex("((?:abc)|(?:xyz))*") 3

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"));
   }
}
True

new Regex("^\\d+") 1

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));
   }
}
True
False
True
False
False

new Regex("\d+$") 2

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));
   }
}

new Regex("^\\d+$") 3

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));
   }
}

new Regex(?(^\d)^\d+$|^\D+$)

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"));
   }
}
cat too
dag

new Regex(^\d+$\n+, RegexOptions.Multiline)

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);
   }
}
987987

new Regex(<[^>]+>[^<]*</[^>]+>): for XML tag

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));
   }
}
True
True

Regular Expresion Part

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();
    }
}
122.1.1.192

Reverse

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) );
    }
}
1.123.168.192 (the reverse of 192.168.123.1)

Use Regular Expressions to split string

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);
        }
    }
}
Word: A
Word: B,cCCC
Word: D

Using RegEx

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);
        }
    }