2010-12-13 100 views
1

我是新来的正则表达式。我设法解决一系列整数的,但现在我需要一些东西来满足这样的:匹配字符串列表的正则表达式

{anystring, anystring, anystring} 

包括支架和不仅3项,但对于任何号码。

+0

被允许在 'anystring' 什么角色? – MerickOWA 2010-12-13 21:20:57

回答

1

这应该为你工作:

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

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

这是我在在这种格局正在发生的事情作出解释的尝试:

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

请参阅this page了解正则表达式中有用的“备忘单”。

+0

我更正了_jjnguy_名字上的拼写。希望我不会因为你在制作过程中所做的任何编辑而陷入困境。 – 2010-12-13 21:42:55

+0

@Jeff M jjnguy,gotcha - 我怪怪的:)无后顾之忧;我只是想澄清第三点要点。 – Donut 2010-12-13 21:43:07

+0

为表达和有用的评论和链接欢呼! – 2010-12-14 07:41:19

1

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

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

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

0

我宁愿:

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