正则表达式选择除了两个连续空格之外的[A-Z]

时间:2015-03-24 10:46:17

标签: c# regex string

我一直试图创建一个正则表达式来匹配来自A-Z和单个空格的所有字母。我希望它在超过1个连续空间时停止。我也不想包括破折号。这被调用并作为基于C#的程序中的字符串返回。我计划在导入后将字符串裁剪为1,以删除末尾的空格(如果最终由正则表达式返回)。

TERRA MARVELLOUS LUX      -

到目前为止,我已尝试过多种表达方式,目前为止我能提出的最佳表达方式是

^[A-Z (?!\s{2,})]*

以及

^[A-Z ]*(?:\s{2})

依此类推,我可以列出更多我一直在尝试的内容。我很困惑。

3 个答案:

答案 0 :(得分:2)

^[A-Z ]+\b

你可以尝试一下。参见演示。

https://regex101.com/r/tJ2mW5/20

答案 1 :(得分:2)

这可以解决您的问题:

([A-Z]+[ ]{1})+

主要思想是匹配A-Z中至少一个字符的所有组,然后有一个空格并至少匹配一次该模式。

示例: https://regex101.com/r/tJ2mW5/21

答案 2 :(得分:0)

如果您想用连字符去除最终空格,可以使用

 var t1 = "TERRA MARVELLOUS  LUX      -";
 var rx2 = new Regex(@"\s+\-?$");
 var res = rx2.Replace(t1, string.Empty);