正则表达式奇怪的字符串

时间:2012-01-03 14:48:48

标签: regex

我需要帮助为下面的字符串写正则表达式。我尝试了很多模式,但都失败了。 我有一个像

这样的字符串
package1[module11,module12,module13],package2[module21,module22,module23,module24,module25],package3[module31]

我希望将此字符串拆分为

package1
module11,module12,module13
package2
module21,module22,module23,module24,module25
package3
module31

我知道从这里问一个正则表达式是很奇怪的但是......

1 个答案:

答案 0 :(得分:4)

您可以使用模式进行匹配:

(\w+)\[(\w+(?:,\w+)*)\]

示例:http://www.rubular.com/r/rPUEWBoU1d

模式非常简单,真的:

  • (\w+) - 捕获第一个单词(package1
  • \[
  • (\w+(?:,\w+)*) - 至少有一个单词(module11)的序列,后跟逗号分隔的单词(假设它们格式正确)
  • \]

在所有情况下,您可能希望将\w更改为您的字母(甚至可能是[^,\[\]] - 而不是逗号或括号。您还可能需要检查整个字符串匹配,因为上述模式可能会跳过不需要的部分(例如:a[b]$$$$c[d]