2015年11月30日月曜日

正規表現によるSplit

数字部分でSplit
using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Regex splitReg = new Regex(@"[0-9]+");

            string[] a = splitReg.Split("AB12CD34EF");

            foreach (string data in a)
            {
                Console.WriteLine(data);
            }
        }
    }
}

AB
CD
EF
正規表現の部分が区切りとみなされ分割される。

正規表現の部分も取得したければ、グループ化すれば

取得してくれる。

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Regex splitReg = new Regex(@"([0-9]+)");

            string[] a = splitReg.Split("AB12CD34EF");

            foreach (string data in a)
            {
                Console.WriteLine(data);
            }
        }
    }
}

AB
12
CD
34
EF


正規表現にマッチすると、分割し、捨てられる。
ただし、かっこでくくっておくと、それは取ってくれる。

極端なことを言えば、数字で分割するけど、分割後偶数はとっておこう。
なんて思うと
using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Regex splitReg = new Regex(@"(?:([02468])|[13579])+");

            string[] a = splitReg.Split("A1B2C3D45E67F8G9H");

            foreach (string data in a)
            {
                Console.WriteLine(data);
            }
        }
    }
}

A
B
2
C
D
4
E
6
F
8
G
H

0 件のコメント:

コメントを投稿