Kev*_*v84 3 .net c# regex .net-4.0 match
我有这个
图案:
[0-9]*\.?[0-9]*
Run Code Online (Sandbox Code Playgroud)
目标:
X=113.3413475 Y=18.2054775
Run Code Online (Sandbox Code Playgroud)
我想匹配数字.它匹配http://regexpal.com/和Regex Coach 等测试软件中的find .
但是在Dot net和http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
我明白了:
Found 11 matches:
1.
2.
3.
4.
5.
6. 113.3413475
7.
8.
9.
10. 18.2054775
11.
String literals for use in programs:
C#
@"[0-9]*[\.]?[0-9]*"
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么我得到所有这些空的比赛.
谢谢和问候,凯文
Jon*_*eet 10
是的,那将匹配空字符串.看它:
[0-9]* - zero or more digits
\.? - an optional period
[0-9]* - zero or more digits
Run Code Online (Sandbox Code Playgroud)
一切都是可选的,所以空字符串匹配.
听起来你总是希望在某处有数字,例如:
[0-9]+\.[0-9]*|\.[0-9]+|[0-9]+
Run Code Online (Sandbox Code Playgroud)
(这里的顺序很重要,因为你希望它尽可能地采取.)
这对我行得通:
using System;
using System.Text.RegularExpressions;
class Test
{
static void Main(string[] args)
{
string x = "X=113.3413475 Y=18.2054775";
Regex regex = new Regex(@"[0-9]+\.[0-9]*|\.[0-9]+|[0-9]+");
var matches = regex.Matches(x);
foreach (Match match in matches)
{
Console.WriteLine(match);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
113.3413475
18.2054775
Run Code Online (Sandbox Code Playgroud)
无可否认,可能有更好的方法做到这一点:)