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

时间:2013-02-11 01:25:49

标签: java regex

例如:
输入 => “Some.Random ,, Test.Data此处价格为1,23.456 ......,$$$”
输出匹配 =>除 1,23.456

之外的所有内容

价格定义为任何字符串开头和&以数字结尾,具有一个或多个字符分隔符。 例如:

    1.23,456
    123456
    1:23; 456
    1.23.456

< / p>

请注意,所有关于输入的知识都是它可以是任何长度的字符串,但其中嵌入了Price。

基本上解决的问题是使用String ReplaceAll从输入字符串中提取Price,这是系统中内置的运行时函数。所以我会说  ReplaceAll(Regex,EMPTY_String)只返回输入中的价格

我一直在尝试“ [\ D&amp;&amp; [^(?&lt; = \ d)\ D(?= \ d)]]] ”其中我会匹配所有非数字和任何不出现的非数字b / wa数字,仅使用正则表达式。

谢谢,

1 个答案:

答案 0 :(得分:2)

这个regex (demo)应该可以解决问题:

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

as Java string:

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

将替换为第一和第二个被捕获的组:

$1$2

如:

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