2013-12-07 50 views
0

我正在使用java中的正則表達式。我有一個文件,其中包含以下模式,其後是其他文本。模式:如何在java中提取與正則表達式匹配的模式

Bombay Garden 5995 Mowry Ave Newark, CA (510) 744-6945 
    Bombay Garden 172 E. 3rd Ave. San Mateo, CA (650) 548-9966 
    Bombay Garden 3701 El Camino Real Santa Clara, CA (408) 241-5150 

我有以下每條匹配的正則表達式。正則表達式:

(.*?)(\d{1,4})(\s*\w*)*(\w+),(\s*)(CA|AZ|NY)(\s*)(\(?[1-9]\d{2}\)?\s*\d{3}-?\d{4}) 

這匹配一行,但我想提取使用Java的三個分支的每一個的街道名稱,狀態和電話號碼。

任何人都可以幫助我嗎?

回答

1

您可以通過使用Matcher對象的group(),並傳遞一個組號,即提取捕獲組的內容:

Matcher m = Pattern.compile(yourRegex).matcher(yourString) 
    while (m.find()) 
    { 
     System.out.println(m.group(1)); 
     System.out.println(m.group(2)); 
     String state = m.group(6); 
     ... 
    } 

組0是整個圖案。第1組是您的第一個捕獲組,即您的情況m.group(6)將返回狀態。

+0

謝謝!有效! – Nemin

+0

@Nemin沒問題。 –

+1

@Nemin [Here's](http://docs.oracle.com/javase/tutorial/essential/regex/)Java中正則表達式的oracle教程。祝你好運。 –