我正在尝试编写一个正则表达式代码来删除空格,第一个单词,括号和所有数字。
我有以下文字:
{a, 1, b, 4, c, 6, d, 8}
我感兴趣的是:b,c和d,但不包括a。
这个正则表达式:"\,([^{^,+^\d-}]*)"
给了我b,c和d但是有空格。
我试过这个:"\,([^{^,+^\d-^\s+}]*)"
但没有运气。
有什么建议吗?
答案 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