-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 到多个数字开头,则上面的正则表达式将选择一行

^标记字符串的开头并$标记字符串的结尾(注意^$是必需的,否则它将匹配字符串之间的任何位置)

\d匹配单个数字。\d+将匹配 1 到多个数字

(A|B)将匹配 A OR 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 来测试我的 Regex 代码。

如果我正确理解您的问题,您希望收到每行的第一个“数字”。此外,这些数字的长度可能为 2-3 个字符?

尝试以下正则表达式:

^\d{2,3}

^ 匹配换行符或第一个字符 \d 指定您要查找的数字 {2,3} 指定您要查找的数字可能在两到三个字母之间。

于 2013-06-03T17:01:11.943 回答