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

Regex 正则表达式:方括号内的括号,regex,Regex,我想匹配以下字符串: [-ed, -ing, -ment <i>n.</i>] [-ed,-ing,-ment n.] 但不包括: [-ed, -ing, -ment <b>n.</b>] [-ed,-ing,-ment n.] 我的正则表达式是: \[[\-,\s\.(<i>)(</i>)a-z]+\] \[\-,\s\.()()a-z]+\] 这是行不通的 我将括号添加到中,使其作为一个整体显示,因此不

我想匹配以下字符串:

[-ed, -ing, -ment <i>n.</i>]
[-ed,-ing,-ment n.]
但不包括:

[-ed, -ing, -ment <b>n.</b>]
[-ed,-ing,-ment n.]
我的正则表达式是:

   \[[\-,\s\.(<i>)(</i>)a-z]+\]
\[\-,\s\.()()a-z]+\]
这是行不通的

我将括号添加到
中,使其作为一个整体显示,因此
不会匹配


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

以下内容适用于示例字符串:

\[([^<>]|<i>.*?<\/i>)+?\]
\[([^]|.*)+?\]
即,方括号中包含许多内容,这些内容要么是既不是
,要么是带有某些内容的
[…]

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

  • 它只是
    还是什么都不是

  • 方括号是否可以包含嵌套的方括号

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


您认为正则表达式是如何工作的?转义方括号意味着它们将匹配文字方括号,那么
\-,()()a-z
应该如何匹配
-ed,-ing,-ment n.
?!我注意到了你提到的那个问题,并纠正了它。但是
\[\-,()()a-z]+\]
也不起作用(编辑后)。现在你只是误解了字符类(
[…]
[\-,()()a-z]
相当于
[,\/()aiz-]
。我可以建议你读一本正则表达式教程吗?你确定吗
a-z
表示从a到z的任何字母表,即
a,b,c,d…z
oops,我的坏。它应该是
[,\/()a-z-]
。它与
匹配,因为
都在那里。”我给
添加了括号,使其看起来像一个整体“,这就是你错的地方;您只需将
/
i
添加到类中,大多数添加了两次。