我正在尝试解析数字以存储在VB.NET中的字符串变量中(还希望包含小数点)。
以下是一个示例字符串:Refund issued for $27.74
答案 0 :(得分:2)
正如casperOne已经指出的那样,一个例子不足以提供完整的解决方案。
正则表达式字符串可能看起来像"\\$([0-9]+\\.[0-9]+)"
或"Refund issued for \$(?<Value>[0-9]+\.[0-9]+)"
。后者更具限制性。
第二个示例还使用命名组。如果你有一个更复杂的场景,这可以让你在调用Regex.Match后更容易提取匹配。
使用.net风格正则表达式的一个很好的工具是Expresso。
答案 1 :(得分:1)
你真的不需要一个正则表达式,因为对0-9中的每个字符(或对static IsNumber method on the Char structure的调用)的简单迭代和比较都会这样做(对于C#代码,对不起)很容易转换成VB.NET):
static IEnumerable<char> GetNumericCharacters(this string s)
{
// Check for null.
if (s == null) throw new ArgumentNullException("s");
// Iterate through the characters.
foreach (char c in s)
{
// If a number, return it.
if (char.IsNumber(c)) yield return c;
}
}
当然,正则表达式同样简单:
[0-9]
您可以使用RegEx类获取该模式的所有匹配项并将它们连接在一起。
每个解决方案失败的唯一时间是在不同的上下文中有多个数字时,例如:
“用户购买10件商品,每件0.99美元”