1


以下の文字列を解析しようとしています:

*A. BOSCOLO1,4、JA STARR2、N. LUNARDI4、C. ORI4、JP BENNETT、Jr3、V. JEVTOVIC-TODOROVIC2,3,4、

予想される出力は以下のとおりです。

*A. ボスコロ 1,4
JA スター 2
N. ルナルディ 4
C. オリ 4
JP ベネット、ジュニア 3
V. イェフトビッチ-トドロビッチ 2,3,4

矛盾しているため、区切り記号 (,) でそれらを分割することはできません。上記は名前の後に 1 つ以上の数字が続くものです。単語の後に数字とコンマが続き、次の単語まで、および数字を含まない名前は許可されません。
同じ の REGEX の書き方がわかりません。どんな助けでも大歓迎です。
ありがとう

4

1 に答える 1

3

次のような正規表現を使用できます:;

[*A-Z]\D+\d+(,\d+)*

例:

string data = "*A. BOSCOLO1,4, J. A. STARR2, N. LUNARDI4, C. ORI4, J. P. BENNETT, Jr3, V. JEVTOVIC-TODOROVIC2,3,4,";

MatchCollection matches = Regex.Matches(data, @"[*A-Z]\D+\d+(,\d+)*");

foreach (Match x in matches) {
  Console.WriteLine(x);
}

出力:

*A. BOSCOLO1,4
J. A. STARR2
N. LUNARDI4
C. ORI4
J. P. BENNETT, Jr3
V. JEVTOVIC-TODOROVIC2,3,4
于 2012-09-25T16:34:56.090 に答える