正则表达式:方括号内的括号

时间:2015-02-11 11:08:50

标签: regex

我想匹配以下字符串:

[-ed, -ing, -ment <i>n.</i>]

但排除:

[-ed, -ing, -ment <b>n.</b>]

我的正则表达是:

   \[[\-,\s\.(<i>)(</i>)a-z]+\]

哪个不起作用。

我向<i>添加了括号,因此它显示为一个整体,因此<b>不匹配。

但是,方括号内的括号似乎不起作用。

1 个答案:

答案 0 :(得分:2)

以下适用于示例字符串:

\[([^<>]|<i>.*?<\/i>)+?\]

即。方括号,包含许多既不是<也不是>的单个字符,或者是包含某些内容的<i>[...]</i>

它将匹配第一个字符串而不是第二个字符串。然而问题描述非常模糊,因此正则表达式可能需要一些调整。 E.g:

  • 只是 <i>还是 <b>以外的任何内容?

  • 方括号可以包含嵌套的方括号吗?

  • 方括号的内容实际上是逗号分隔的元素,必须以连字符开头吗?