正则表达式的字符串中仅忽略价格
问题描述:
对于如:
输入 =>“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数字,只使用正则表达式。
感谢,
答
这regex (demo)应该做的伎俩:
^(.*?)(?:\d[0-9.,]*\d)(.*)$
为Java字符串:
"^(.*?)(?:\\d[0-9.,]*\\d)(.*)$"
与第一和第二捕获基团取代:
$1$2
如:
String output = input.replaceAll("^(.*?)(?:\\d[0-9.,]*\\d)(.*)$", "$1$2");
价格和1,23.456之间是否有空白,并且是字符串中的最后一个空格?如果是这样,你可以在那里切断绳子。 – 2013-02-11 01:27:41
另外,数字和货币符号之间是否真的有逗号(并且总是有3个货币符号)? – jlordo 2013-02-11 01:32:07
@ pavan:_price_是如何定义的?字符串中的任何数字是否是一个价格?只有一个跟着一个美元符号?数字和美元符号之间是否有逗号,如同您的示例一样?请编辑该问题并添加一些详细信息,或者该问题太模糊,无法回答,我将投票关闭它。 – jlordo 2013-02-11 01:35:50