正则表达式的字符串中仅忽略价格

问题描述:

对于如:
输入 =>“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

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