C# 将正则表达式模式更改为一次匹配一个字符的字符串

C# 将正则表达式模式更改为一次匹配一个字符的字符串,c#,regex,C#,Regex,我正在制作一个正则表达式模式,它匹配特定区域的十进制纬度和经度。它应该在40到46或115到125之间匹配,然后是一个小数点,然后最多10位。它做到了这一点。问题是它用于异步验证,因此每个数字/字符都需要匹配。模式如下: @"^((4[0-6])|(11[5-9]|12[0-5]))(\.|°)?([0-9]{1,10})°?$"; 所以它应该匹配4,43,43,43.123等等。它匹配一个完整的模式,但不匹配个体。我一直在寻找非捕获组,但它似乎不适合这里,我的测试也没有结果。我走错方向了吗

我正在制作一个正则表达式模式,它匹配特定区域的十进制纬度和经度。它应该在40到46或115到125之间匹配,然后是一个小数点,然后最多10位。它做到了这一点。问题是它用于异步验证,因此每个数字/字符都需要匹配。模式如下:

@"^((4[0-6])|(11[5-9]|12[0-5]))(\.|°)?([0-9]{1,10})°?$"; 
所以它应该匹配4,43,43,43.123等等。它匹配一个完整的模式,但不匹配个体。我一直在寻找非捕获组,但它似乎不适合这里,我的测试也没有结果。我走错方向了吗

(((4[0-6])|(11[5-9]|12[0-5]))(\.|°)?([0-9]{1,10})°?(, )?)+

这个表达式适合你的需要吗?

我现在确信正则表达式不是解决这个问题的方法。如果有人想给出一个这样的答案,我会把它关闭,我们可以继续我们的生活。谢谢BattlFrog

为什么要匹配
4
?如果字符串是唯一的
4
,则会得到一个假匹配?真。也许我需要在switch语句中使用一些模式,这样字符串就可能会失败,直到匹配某个内容或失败为止。你可以用一大堆嵌套的、可选的、非捕获的组来完成它,但最终你会得到一个完全混乱的表达式。像
^(?)(?)(?:((4[0-6]))(11[5-9]| 12[0-5])(\.\124°)([0-9]{1,10})([4[1[12])$这样的东西怎么样?演示:。注意,您不能将其用于最终验证。正则表达式只能匹配完整模式。您可以使用状态机在处理过程中跟踪状态,但正则表达式在这方面没有帮助,除非您将所有异步可能性都作为单独的正则表达式(或“|”或-它们),这将导致过多的部分/表达式。