2013-05-14 50 views
0

我有这样如何提取两个符号

*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             

字符串我使用正则表达式我怎么能做到这一点

目前我使用\*\w{6}\«但它获取想要PMGFEC从* PMGFEC«之间串*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 
+0

它必须是一个正则表达式?不会'string.Split'吗? – 2013-05-14 12:10:06

+0

nope我只想要正则表达式 – amitesh 2013-05-14 12:11:17

+0

在这种情况下,这是重复的。另请参阅右侧的问题列表。 – 2013-05-14 12:12:58

回答

1

而不是使用您可以使用lookaround assertions捕获组只匹配想要的部分:

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

感谢它工程队友 – amitesh 2013-05-14 12:26:53

+0

我有一个问题,我想选择美元和空间之间的一些货币,但是当我使用你的正则表达式它没有工作,我用这样的用户正则表达式(?<= \ USD)\ s { 3} \ d {1,4} \。\ d {2}(?= \ s)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 14美元1363.41美元 – amitesh 2013-05-14 12:36:49

0

您需要使用group,通过(...)表示,仅捕捉您感兴趣的字符。然后,您可以检查结果的Groups属性提取文本。

例如:

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

这应该这样做[*]([a-zA-Z]{1,6})[«]。您可以使用其他字符替代您的所需文字。

enter image description here

+0

我很好奇,你用什么来生成该图? – 2013-05-14 12:17:56

+2

@ p.s.w.g查看http://debuggex.com – Stephan 2013-05-14 12:20:52

+0

谢谢,我必须记住这一点。看起来像是解释正则表达式的非常好的工具。 :) – 2013-05-14 12:22:52