C# 正则表达式匹配前面没有字母的数字

C# 正则表达式匹配前面没有字母的数字,c#,regex,C#,Regex,我想匹配像“100”、“1.1”、“5.404”这样的数字,如果它们前面没有这样的字母:“V102” 下面是我当前的正则表达式: (?<![A-Za-z])[0-9.]+ (? 这应该匹配任何字符0-9。如果没有前缀(A-Za-z),则重复一次或多次 但是它所做的是匹配V102,作为02,所以它只需要去掉V和一个字母,然后其余的字母就匹配了,而实际上它根本不应该匹配这个大小写。我如何使它能够获取所有数字,然后检查前缀是否不存在?尝试使用插入符号^操作符。这个操作符表示您想要您的patte

我想匹配像“100”、“1.1”、“5.404”这样的数字,如果它们前面没有这样的字母:“V102”

下面是我当前的正则表达式:

(?<![A-Za-z])[0-9.]+
(?
这应该匹配任何字符0-9。如果没有前缀(A-Za-z),则重复一次或多次


但是它所做的是匹配V102,作为02,所以它只需要去掉V和一个字母,然后其余的字母就匹配了,而实际上它根本不应该匹配这个大小写。我如何使它能够获取所有数字,然后检查前缀是否不存在?

尝试使用插入符号
^
操作符。这个操作符表示您想要您的pattern从输入的开头开始。例如,
^[0-9.]+
将匹配以数字或
开头且具有任意数量的输入。
请注意,此模式不仅与数字匹配,因为它还与超过1个点的模式匹配,例如
2.00.2
,这不是一个有效的数字。

您是否可以使用单词边界

\b[0-9\.]+\b

将数字和小数点添加到负查找:

(?<![A-Za-z0-9.])[0-9.]+
(?
这将强制所有匹配项以非数字和非字母(即空格或其他分隔符)开头。这样,数字的结尾也将不是有效匹配项

演示:

尝试正则表达式:

(?<![A-Za-z0-9])[0-9.]+

(?如果您不希望字符串中有字母或空格,那么这应该可以:

^[0-9.]+$

非正则表达式解决方案。

如果您有以下字符串,则可以使用
double.TryParse
查看该字符串是否为double。请尝试:

string str = "100 1.1 V100 d333 ABC 1.1";
double temp;
string[] result = str.Split().Where(r => (double.TryParse(r, out temp))).ToArray();
或者,如果需要双数组作为回报,则:

double[] numberArray = str.Split()
                          .Where(r => double.TryParse(r, out temp))
                          .Select(r => double.Parse(r))
                          .ToArray();

你真的想匹配输入或输入中的标记吗?答案在很大程度上取决于此。例如,在
A 922
中,你是想匹配
922
还是什么都不匹配?我猜匹配输入中的标记。它可以是一个随机的长字符串,并且应该匹配所有不包含前面字母的数字。@Barmar我真的很感谢,但我在c#中不是这样做的。我只是添加它来逃避格式化,不管是什么原因(?)是某个Stackoverflow命令的开始。但我想在我将其放入代码框后,它就不需要了。这很有效。谢谢,mellamokb在几秒钟前提交了几乎完全相同的内容。因此我选择了他。您的反向查找中也需要小数点,否则它将与
F1.00中的
.00
不正确匹配(示例:)@mellamokb说得好,没有说出来。你的答案中已经有了答案,可以接受。他只说拒绝带有字母前缀的数字。这个解决方案将拒绝带有任何非数字前缀的数字。