嗨我需要一个Regex Expression来从右到左只提取浮点数
示例字符串
每股权益收益(
) face value of
2每26,675.10 1,252.56
我当前的Regex
(\+|-)?[0-9][0-9]*(\,[0-9]*)?(\.[0-9]*)?
- 从右到左
但是
当前输出
1,252.56
1,675.10
26
2
但我不希望在26
或2
请帮帮我
答案 0 :(得分:3)
也许这样的事情会有所帮助
<强>正则表达式强>
/[-+]?[0-9,\.]*([,\.])[0-9]*/g
示例输入
收入-34 5 b4 pe8r blah4 t3st + - (in)1,252.56 face -12234,23423.342 of 1,675.10 1,252.56
<强>匹配强>
1,252.56
-12234,23423.342
1,675.10
1,252.56
解释
[-+]?
匹配以下列表中的单个字符
?
在零和一个之间,尽可能多次,根据需要回馈 [greedy] -+
列表-+
中的单个字符 [0-9,\.]*
匹配以下列表中的单个字符
*
在零和无限之间,尽可能多次,根据需要回馈 [greedy] 0-9
0
和9
,
文字,
\.
字面匹配字符.
第一个捕获小组 ([,\.])
[,\.]
匹配下面列表中的单个字符
,
文字,
\.
字面匹配字符.
[0-9]*
匹配以下列表中的单个字符
*
在零和无限之间,尽可能多次,根据需要回馈 [greedy] 0-9
0
和9
g
修饰符:全局。所有比赛(首场比赛都没有回归)
答案 1 :(得分:0)
虽然这是一个Regex
问题,但这也是C#
下面是一个如何对输出进行更多控制的示例
它还具有文化特定性,只能获取带小数位的数字,并且没有误报
方式强>
private List<double> GetNumbers(string input)
{
// declare result
var resultList = new List<double>();
// if input is empty return empty results
if (string.IsNullOrEmpty(input))
{
return resultList;
}
// Split input in to words, exclude empty entries
var words = input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
// set your desirted culture
var culture = CultureInfo.CreateSpecificCulture("en-GB");
// Refine words into a list that represents potential numbers
// must have decimal place, must not start or end with decimal place
var refinedList = words.Where(x => x.Contains(".") && !x.StartsWith(".") && !x.EndsWith("."));
foreach (var word in refinedList)
{
double value;
// parse words using designated culture, and the Number option of double.TryParse
if (double.TryParse(word, NumberStyles.Number, culture, out value))
{
resultList.Add(value);
}
}
return resultList;
}
<强>用法强>
var testString = "Earning -34 5 b4 , . 234. 234, ,345 45.345 $234234 234.3453.345 $23423.2342 +234 -23423 pe8r blah4 t3st + - (in) 1,252.56 face -12234,23423.342 of 1,675.10 1,252.56";
var results = GetNumbers(testString);
foreach (var item in results)
{
Debug.WriteLine("{0}", item);
}
<强>输出强>
45.345
1252.56
-1223423423.342
1675.1
1252.56
附加说明
您可以详细了解double.TryParse及其选项here
您可以详细了解CultureInfo类here