-1

これは私の入力文字列です。

33 FA PAX 001-7243691655/ETAA/USD908.61/19APR13/DCA1S211E/49881               
   134/S2-5                                                                
029 AF/FA 001-7243691655/ETAA/USD908.61/19APR13/DCA1S211E/                 
    49881134/AA2010 S 14MAY SFOORD/AA 054 S 14MAY ORDMAN/AA                
    055 O 11JUN MANORD/AA1661 O 11JUN ORDSFO/BENNION/MEGHAN                
    R(CHD)                                                                 
029 RF-MZ CR-DCA1S211E 49881134 SU 1983MZ/RO-67ECDAB1 DCA1S2               
    10W 49592222 19APR0550Z  

ここでは、開始桁に従って文字列をフェッチしたいと思います。桁は次のとおりです:-

 33 

029 

029 
4

4 に答える 4

1

この正規表現でそれを行うことができます

^\s*(\d+).*$

上記の正規表現は、0 から多くのスペース (\s*) で始まり、その後に 1 から多くの数字が続く場合、行を選択します。

^文字列の先頭をマークし、文字列$の末尾をマークします (:^$必要です。それ以外の場合は、文字列の間の任意の場所に一致します)

\d1 桁に一致します。\d+1桁から複数桁に一致します

(A|B)AまたはBに一致します

.multiline( default ) オプションが使用されている場合、改行以外の任意の文字に一致します

*前の文字 0 に何回も一致する量指定子です


あなたのコードは

List<String> lst=Regex.Matches(input,regex)
                      .Cast<Match>()
                      .Select(x=>x.Value).ToList();

lstこれで、必要な行のlist( ) ができました

于 2013-06-03T16:58:35.593 に答える
1

この正規表現を試してみてください。

(?m)^\s*\d{2,3}|\/\d{3}
于 2013-06-03T18:24:20.763 に答える
0

あなたができることは、MultiLineオプションを使用することです

Regex regex = new Regex(@"^\d+", RegexOptions.Multiline);
Match m = regex.Match(s);
于 2013-06-03T17:00:09.880 に答える
0

正規表現コードのテストには常に RegexPal を使用しています。

私があなたの問題を正しく理解しているなら、あなたは各行の最初の「数字」を受け取りたいと思っています。さらに、数字の長さは 2 ~ 3 文字と異なる場合があります。

次の正規表現を試してください。

^\d{2,3}

^ は、改行または最初の文字に一致します。\d は、数字 {2,3} を探していることを示しています。探している数字が 2 ~ 3 文字の長さであることを示しています。

于 2013-06-03T17:01:11.943 に答える