2

私はこのような文字列を持っています -"[A]16 and 5th and A[20] and 15"

、、、、の値[A]16を取る必要があります。(数字と、存在する場合は [A])5A[20]15

私はC#を使用しています。

 string[] numbers = Regex.Split("[A]16 and 5th and [A]20 and 15", @"\D+");

以下のコードでは、数字のみが表示されます。しかし、数字のフォントに [A] も必要です (存在する場合)。

助けてください。

4

4 に答える 4

1

より一般的なパターンは次のようになります。

@"\[[A-Z]][0-9]+|[A-Z]\[[0-9]+]|[0-9]+"



[[A-Z]][0-9]       - matches [Letter from A-Z]Number          example: [A]10
or |[A-Z]\[[0-9]+] - matches Letter from A-Z[Number]          example: A[10]
or |[0-9]+         - matches Numers from 1-N                  example: 5, or 15
于 2012-04-26T08:04:36.247 に答える
0

このパターンを使用します: s@"(\[A\])?\d+"しかない場合[A]
あなたも持っているなら[B][C]...あなたはこのパターンを使うことができます:@"(\[[A-Z]\])?\d+"

于 2012-04-26T07:58:12.853 に答える
0

次のパターンを使用できます。

string lordcheeto = @".*?(\[A\]\d+|\d+|A\[\d+\]).*?";

また、必要な一致からジャンクをトリミングします。ただし、Split仕組みにより、配列には空の文字列が含まれます。一見必要な一般的なケースについては、これを使用できます。

string lordcheeto = @".*?(\[[A-Z]\]\d+|\d+|[A-Z]\[\d+\]).*?";

コード

using System;
using System.Text.RegularExpressions;

namespace RegExIssues
{
    class Program
    {
        static void Main(string[] args)
        {
            // Properly escaped to capture matches.
            string lordcheeto = @".*?(\[A\]\d+|\d+|A\[\d+\]).*?";
            string input = "[A]16 and 5th and A[20] and 15";

            executePattern("lordcheeto's", input, lordcheeto);

            Console.ReadLine();
        }

        static void executePattern(string version, string input, string pattern)
        {
            // Avoiding repitition for this example.
            Console.WriteLine("Using {0} pattern:", version);

            // Needs to be trimmed.
            var result = Regex.Split(input.Trim(), pattern);

            // Pipe included to highlight empty strings.
            foreach (var m in result)
                Console.WriteLine("|{0}", m);

            // Extra space.
            Console.WriteLine();
            Console.WriteLine();
        }
    }
}

テスト

http://goo.gl/VNqpp

出力

Using lordcheeto's pattern:
|
|[A]16
|
|5
|
|A[20]
|
|15
|

コメント

さらに何か必要な場合、またはこれが他の文字列で壊れている場合は、お知らせください。おそらく変更できます。

于 2012-04-26T09:05:53.377 に答える
0

これを試して :

(\[[A-Z]\][0-9]+)|([A-Z]\[[0-9]+\])|([0-9]+)

デモ :

http://regexr.com?30p8v

于 2012-04-26T09:12:38.090 に答える