【发布时间】:2015-02-11 19:41:51
【问题描述】:
我想匹配以下字符串:
[-ed, -ing, -ment <i>n.</i>]
但排除:
[-ed, -ing, -ment <b>n.</b>]
我的正则表达式是:
\[[\-,\s\.(<i>)(</i>)a-z]+\]
这行不通。
我将括号添加到<i>,使其作为一个整体显示,因此<b> 不会匹配。
但是,方括号内的括号似乎不起作用。
【问题讨论】:
-
您认为正则表达式如何工作?转义方括号意味着它们将匹配文字方括号,那么
\-,(<i>)(</i>)a-z应该如何匹配-ed, -ing, -ment <i>n.</i>?! -
我注意到你提到的问题并纠正了它。但是
\[[\-,(<i>)(</i>)a-z]+\]也不起作用。 -
(经过编辑。)现在您只是误解了字符类 (
[...])。[\-,(<i>)(</i>)a-z]等价于[<>,\/()aiz-]。我可以建议您阅读正则表达式教程吗? -
你确定吗?
a-z表示从 a 到 z 的任何字母,即a, b, c, d...z -
糟糕,我的错。应该是
[<>,\/()a-z-]。它匹配<b>,因为<、b和>都在里面。 '我在<i>中添加了括号,所以它看起来是一个整体',这就是你错的地方;您只是将<、>、/、(、)和i添加到班级,其中大部分是两次。
标签: regex