如何使用C#匹配组中单词前的所有空格(如果有)?
我想匹配单词前的所有空格(如果有)如何使用C#匹配组中单词前的所有空格(如果有)?,c#,regex,C#,Regex,我想匹配单词前的所有空格(如果有) Regex re = new Regex(@"(\d+);([\d\.]+);([\d\.]+);([\w-\(\)\.,\/]+);(\d+);(\d+);([\d,]+);(\d+)", RegexOptions.Compiled); 上述正则表达式适用于示例1,但不适用于示例2。 例如,我需要在哪里更改regex-2 Example-1: 44;52.93; 8.24;GROSSENKNETEN;201902;28;408.7;28;509.86 71
Regex re = new Regex(@"(\d+);([\d\.]+);([\d\.]+);([\w-\(\)\.,\/]+);(\d+);(\d+);([\d,]+);(\d+)", RegexOptions.Compiled);
上述正则表达式适用于示例1,但不适用于示例2。
例如,我需要在哪里更改regex-2
Example-1:
44;52.93; 8.24;GROSSENKNETEN;201902;28;408.7;28;509.86
71;48.22; 8.98;ALBSTADT-BADKAP;201902;28;475.3;28;-999.9
73;48.62;13.05;ALDERSBACH-KRIESTORF;201902;28;519.8;28;561.76
如果您可以正常访问完整的C#功能,只需逐行读取文件并使用
拆分即可
以获取所有字段
如果您使用的是基于.NET正则表达式的工具,并且需要从文本行中提取特定数据,则可以使用
(?m)^(\d+);\s*([\d.]+);\s*([\d.]+);\s*([\w-().,\/]+);\s*(\d+);\s*(\d+);\s*([\d.]+);\s*(\d+);\s*([-+]?\d*\.?\d+)\r?$
见
在多行模式下,.NET正则表达式中的$
在CR之前不匹配,因此存在\r?
图案细节
-多行模式打开(?m)
-行的开头^
-第1组:一个或多个数字(\d+)
代码>-分号
-0+空格\s*
-第2组:1+个数字或点([\d.]+)
-\s*([\d.]+)\s*
代码>,0+空格,第3组:1+数字/点,
代码>,0+空格
-第4组:1+字,([\w-(),/]+)
,-
,(
,)
,
,
,
,
,
//code>字符
-\s*(\d+)\s*(\d+)\s*
代码>,0+空格,第5组:1+位,
代码>,0+空格,第6组:1+位,
代码>,0+空格
-第7组:1+位/点([\d.]+)
-\s*(\d+)
代码>,0+空格,第8组:1+位
-\s*
代码>和0+空格
-第9组:([-+]?\d*\.?\d+
或-
可选,然后是0+位,可选的+
,1+位
-可选的CR字符和行尾。\r?$
?@AleksAndreev在我的上下文中,我不能拆分,只需要匹配。好吧,如果你坚持,请尝试@(?m^(\d+);\s*([\d.]+);\s*([\d.]+);\s*([\w-(),\/]+);\s*(\d+);\s*([\d.]+)\s*)\s*(\d*);\s*(\d;\s*(-[+])\d+)\r$”
(?m)^(\d+);\s*([\d.]+);\s*([\d.]+);\s*([\w-().,\/]+);\s*(\d+);\s*(\d+);\s*([\d.]+);\s*(\d+);\s*([-+]?\d*\.?\d+)\r?$