删除正则表达式中的空格

时间:2014-11-04 21:50:15

标签: c# regex

我正在尝试编写一个正则表达式代码来删除空格,第一个单词,括号和所有数字。

我有以下文字:

{a, 1, b, 4, c, 6, d, 8}

我感兴趣的是:b,c和d,但不包括a。

这个正则表达式:"\,([^{^,+^\d-}]*)"给了我b,c和d但是有空格。

我试过这个:"\,([^{^,+^\d-^\s+}]*)"但没有运气。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

在您的情况下,最简单的解决方案是提取所有字母并忽略第一个匹配:

var matches = Regex.Matches(inputText, @"\p{L}+")
                   .Cast<Match>()
                   .Skip(1)
                   .Select(match => match.Value)
                   .ToList();

也就是说,如果您不需要验证输入字符串格式。如果这样做,您可以事先使用以下模式:

^\{(?:(?:\s*\w+\s*,\s)*\s*\w+)?\s*\}$

这意味着:

^\{                     # Opening brace
  (?:                   # Optionally:
    (?:\s*\w+\s*,\s)*   #   Words followed by commas 0 to n times
    \s*\w+              #   Followed by a word
  )?                    
\s*                     # Optional whitespace
\}$                     # Closing brace

Demo of the validation regex