1

例如:
输入=> "Some.Random ,,Test.Data Here with price 1,23.456...,$$$"
输出匹配=> 除1,23.456之外的所有内容

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

    1.23,456
    123456
    1:23;456
    1.23.456

请注意,关于输入的所有已知信息是它可以是任意长度的字符串,但其中嵌入了价格。

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

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

谢谢,

4

1 回答 1

2

这个正则表达式(演示)应该可以解决问题:

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

作为Java字符串:

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

替换为第 1 组和第 2 组捕获的组:

$1$2

如:

String output = input.replaceAll("^(.*?)(?:\\d[0-9.,]*\\d)(.*)$", "$1$2");
于 2013-02-11T01:34:30.887 回答