我是新來的正則表達式,並試圖處理下面的正則表達式來udentify序中Outputing匹配的捕獲組在java中
((\\d*1)st|(\\d*2)nd|(\\d*3)rd|(\\d+)th)
我想捕捉只有文本解析,即數量的部分給定的文本。如果文本是21,那麼我想捕獲21被解析爲整數。我知道如何匹配正則表達式來理解模式是否存在並獲得特定的組。有什麼辦法可以得到匹配的表達組作爲表達式的輸出提取值?每側我已經添加了通配符 -
在此先感謝
我是新來的正則表達式,並試圖處理下面的正則表達式來udentify序中Outputing匹配的捕獲組在java中
((\\d*1)st|(\\d*2)nd|(\\d*3)rd|(\\d+)th)
我想捕捉只有文本解析,即數量的部分給定的文本。如果文本是21,那麼我想捕獲21被解析爲整數。我知道如何匹配正則表達式來理解模式是否存在並獲得特定的組。有什麼辦法可以得到匹配的表達組作爲表達式的輸出提取值?每側我已經添加了通配符 -
在此先感謝
你可以重寫你的正則表達式使用非捕獲組是這樣的:
(?:(\\d*)(?:st|nd|rd|th))
只要扔掉外面的非捕獲組。你不需要在這裏做任何分組。 – nhahtdh
謝謝輸出正是我需要的。 – user1411335
我已經簡化您正則表達式,以及 - 重要的。第一個通配符有?爲了防止貪婪匹配,擺脫第一個數字例如21st
。
模式/匹配器方法可以讓您提取組。
Pattern p = Pattern.compile(".*?(\\d*(1st|2nd|3rd|th)).*");
String input = "21st March 2013";
Matcher m = p.matcher(input);
if(m.matches())
System.out.println(m.group(1));
謝謝這有助於! – user1411335
僅供參考,'11th','12th'和'13th'。但是,由於你是匹配文本,它並不重要,(最後一種情況已經涵蓋了這些)。 – nhahtdh