2015-07-13 50 views
2

我有一個服務時段提及作爲提取物開始和結束日期與正則表達式組

MAY 01-15 

和我需要提取的開始和結束日期作爲

group 1 : MAY 01 
group 2 : MAY 15 

是有可能???

+0

在你想的是什麼語言? – Kasramvd

+0

java ...但我的框架只允許有限的操作。我不能使用核心java的很多 –

+0

你能提供你的嘗試來解決問題中的問題嗎? –

回答

0

這是可能的。

這種表達

@(Jan|Feb|May) (\d{1,2})-(\d{1,2})@is 

爲您提供了以下陣列

Array 
(
    [0] => May 01-15 
    [1] => May 
    [2] => 01 
    [3] => 15 
) 

你應該擴大第一個括號你需要/想要的所有月份。

+0

bu我的框架允許我只得到一個組。 –

+0

然後,您需要將字符串分解爲粒子並手動匹配。 –

0

使用Java - String replaceAll() Method怎麼樣?假設你的輸入就像樣本。

String str =「MAY 01-15」;

String start = str.replaceAll("-\\d+$", ""); 
System.out.println(start); 

05月01日

String end = str.replaceAll("\\b\\d+-", ""); 
System.out.println(end); 

5月15

參見test at ideone.com;正則表達式test at regexplanet(點擊的 「Java」)

另請參閱SO regex faq


如果樣品只是一個片段,第一次提取的相關部分:

String full_str = "foo bar MAY 01-15 Lorem ipsum dolor sit amet, consetetur, adipisci velit"; 
String str = full_str.replaceAll("(?s)^.*?(\\b[A-Z]{3,}\\s+\\d{2}-\\d{2})(?!-).*", "$1"); 

Explanation at regex101(右上)

相關問題