2013-05-14 15 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