2013-02-11 98 views
1

對於如:
輸入 =>「Some.Random ,, Test.Data這裏與價格1,23.456 ...... $$$」
輸出匹配除了1,23.456正則表達式的字符串中僅忽略價格

價格被定義爲任何字符串開頭&以數字結束,具有一個或多個字符分離器 =>一切。 例如:

    1.23,456
    1:23; 456
    1.23.456

請注意,所有這些是已知的有關輸入,就是它可以是任何長度的字符串,但並在某處嵌入價格。

基本上解決的問題是使用字符串ReplaceAll從系統中的內建運行時函數中提取輸入字符串中的Price。所以,我要說 的replaceAll(正則表達式,EMPTY_String),這會從輸入

我一直對「[\ d & & [^(?< = \ d)\行試圖返回一些東西只有價格D(?= \ d)]]「其中我會匹配所有非數字和任何非數字不會發生b/wa數字,只使用正則表達式。

感謝,

+1

價格和1,23.456之間是否有空白,並且是字符串中的最後一個空格?如果是這樣,你可以在那裏切斷繩子。 – 2013-02-11 01:27:41

+0

另外,數字和貨幣符號之間是否真的有逗號(並且總是有3個貨幣符號)? – jlordo 2013-02-11 01:32:07

+0

@ pavan:_price_是如何定義的?字符串中的任何數字是否是一個價格?只有一個跟着一個美元符號?數字和美元符號之間是否有逗號,如同您的示例一樣?請編輯該問題並添加一些詳細信息,或者該問題太模糊,無法回答,我將投票關閉它。 – jlordo 2013-02-11 01:35:50

回答

2

regex (demo)應該做的伎倆:

^(.*?)(?:\d[0-9.,]*\d)(.*)$ 

爲Java字符串:

"^(.*?)(?:\\d[0-9.,]*\\d)(.*)$" 

與第一和第二捕獲基團取代:

$1$2 

如:

String output = input.replaceAll("^(.*?)(?:\\d[0-9.,]*\\d)(.*)$", "$1$2"); 
+0

值得注意的是,他必須提取第1組和第2組以獲得他想要的輸出。 – jlordo 2013-02-11 01:41:25

+0

謝謝我更加明確。 – 2013-02-11 02:36:06

+0

謝謝...解決方案。 – pavan 2013-02-11 04:33:18

相關問題