用于获取特定字符串的正则表达式是什么?

时间:2013-06-03 16:55:11

标签: c# regex

这是我的输入字符串。

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  

这里我想根据起始数字来获取字符串.Digit是: -

 33 

029 

029 

4 个答案:

答案 0 :(得分:1)

你可以使用这个正则表达式

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

如果以0到多个空格(\ s *)后跟1到多个数字开头,上面的正则表达式会选择一行

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

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

(A|B)将匹配A OR B

如果使用多行(默认)选项,

.会匹配除换行之外的任何字符

*是一个量词,它将之前的char 0与多次匹配


您的代码将是

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

现在您有所需行的列表(lst

答案 1 :(得分:1)

试试这个正则表达式我希望这会对你有所帮助

(?m)^\s*\d{2,3}|\/\d{3}

答案 2 :(得分:0)

您可以使用MultiLine选项

Regex regex = new Regex(@"^\d+", RegexOptions.Multiline);
Match m = regex.Match(s);

答案 3 :(得分:0)

我总是使用RegexPal来测试我的正则表达式代码。

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

尝试以下正则表达式:

  

^ \ d {2,3}

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