用于匹配字符串列表的正则表达式

时间:2010-12-13 21:19:37

标签: c# regex

我是正则表达式的新手。我设法解决了一系列整数,但现在我需要一些东西来匹配这个:

{anystring, anystring, anystring}

包括括号,不仅包括3个项目,还包括任何数字。

3 个答案:

答案 0 :(得分:1)

以下将(应该)匹配由逗号分隔并用大括号括起来的任意数量的char序列。

@"\{([^,]+, )*([^,]+)\}"

这假设列表将始终包含一个项目。

答案 1 :(得分:1)

这应该适合你:

^\{[^ ,]+(, [^ ,]+)*\}$

假设您的列表包含至少一个项目,每个项目后面跟一个逗号和一个空格(“,”)。如果您只希望每个项目后跟逗号,请使用jjnguy's解决方案。

这是我试图解释这种模式中发生的事情:

  • [^]表达式匹配跟随插入符号^的任何内容。因此[^ ,]将匹配除空格或逗号之外的任何内容。
  • +表示“将之前的内容匹配1次或更多次”。因此[^ ,]+将匹配任何不包含逗号或空格的字符序列。
  • *表示“匹配前一次0次或更多次”。因此,(, [^ ,]+)*将匹配模式, [^ ,]+的0次或更多次出现 - 以逗号和空格开头的序列,后跟至少一个字符的序列(不包含任何逗号或空格)。
  • ^\{\}$中全部包装可确保字符串以左大括号开头,以右大括号结束。

有关正则表达式的有用“备忘单”,请参阅this page

答案 2 :(得分:0)

我更愿意:

String src = "{one, two, three}";
String[] result = src.Substring(1, src.Length - 2).Split(", ");