如何在两个符号之间提取字符串

时间:2013-05-14 12:07:49

标签: .net regex

我有一个像这样的字符串

*PMGFEC«                                                        
1.1GURRALA/KALPANA*ADT  2.1GURRALA/BHARGAVSRIRAM REDDY*ADT     
3.1GURRALA/TEJASVI REDDY*CNN                                   
1 DL  32T 30MAY Q ATLAMS HK3   745P 1040A  31MAY F             
                                           /DCDL*F9L4QB /E  
2 KL 871N 31MAY F AMSDEL HK3   150P  130A  01JUN J             
                                           /DCKL*7XZRBF /E  
3 AI 560G 01JUN J DELHYD HK3   650A  850A /DCAI*YCH0F /E       
4 9W 452W 08AUG Q HYDBOM HK3   605P  735P /DC9W*PYZJQH /E      
5 DL  49T 09AUG F BOMAMS*HK3   110A  700A /DCDL*F9L4QB /E      
6 DL9390T 09AUG F AMSDFW*HK3  1045A  155P /DCDL*F9L4QB /E      
OPERATED BY KLM ROYAL DUTCH AIRLINES                            
7  OTH YY 09APR W GK1  NYC                                     
TKT/TIME LIMIT                                                  

我希望PMGFEC来自* PMGFEC«使用正则表达式我该怎么做

目前我正在使用\*\w{6}\«,但它会抓取*PMGFEC«

我想在美元和最后一个空间之间获取1568.41我该怎么做

NAME    PQ TYPE TKT DES              CREATED       TKT TTL      
 1.1     1                            14MAY USD   1568.41       
 2.1     1                            14MAY USD   1568.41       
 3.1     2  CNN CH25                  14MAY USD   1363.41

3 个答案:

答案 0 :(得分:2)

这应该[*]([a-zA-Z]{1,6})[«]。您可以替换包含所需文本的其他字符。

enter image description here

答案 1 :(得分:1)

您可以使用lookaround assertions仅匹配所需部分,而不是使用捕获组:

(?<=\*)\w{6}(?=\«)

答案 2 :(得分:0)

您需要使用由(...)指示的group来仅捕获您感兴趣的字符。然后,您可以检查结果的Groups属性以提取该文本

例如:

var result = Regex.Matches(input, @"\*(\w{6})«")[0].Groups[1].Value; 
Console.WriteLine(result); // PMGFEC