猿问

如何使用 C# 匹配组中单词之前的所有空格(如果有)?

我想匹配单词之前的所有空格(如果有)。


Regex re = new Regex(@"(\d+);([\d\.]+);([\d\.]+);([\w-\(\)\.,\/]+);(\d+);(\d+);([\d,]+);(\d+)", RegexOptions.Compiled);

上述正则表达式适用于示例 1,但不适用于示例 2。我需要在哪里更改示例 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

Example-2:

00044;52.93; 8.24;            GROSSENKNETEN;201907;31; 53.4;9; 28.6

00071;48.22; 8.98;          ALBSTADT-BADKAP;201907;31; 49.0;8;-999.9

00073;48.62;13.05;     ALDERSBACH-KRIESTORF;201907;31;  0.0;0; 15.7


吃鸡游戏
浏览 97回答 1
1回答

长风秋雁

如果您可以正常访问完整的 C# 功能,只需逐行读取文件并使用 split;即可获取所有字段。如果您使用基于 .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)- 多行模式开启^- 一行的开头(\d+)- 第 1 组:一位或多位数字;- 一个分号\s*- 0+ 空格([\d.]+)- 第 2 组:1+ 数字或点;\s*([\d.]+);\s*- ;, 0+ 空格,第 3 组:1+ 数字/点,;, 0+ 空格([\w-().,/]+)-第4组:1+个单词-、、、、、、、、字符().,/;\s*(\d+);\s*(\d+);\s*- ;, 0+ 空格, 第 5 组: 1+ 数字, ;, 0+ 空格, 第 6 组: 1+ 数字, ;, 0+ 空格([\d.]+)- 第 7 组:1+ 位数/点;\s*(\d+)- ;,0+ 空格,第 8 组:1+ 数字;\s*-;和 0+ 空格([-+]?\d*\.?\d+)- 第 9 组:-或+可选,然后 0+ 位数字,可选.,1+ 位数字\r?$- 可选的 CR 字符和行尾。
随时随地看视频慕课网APP
我要回答