正则表达式排除多个字符串

时间:2011-08-26 15:49:31

标签: regex netbeans regex-negation

可以使用NetBeans 7.01的find函数进行Regex搜索的一些帮助。

我正在尝试排除多个字符串。具体来说,目标行:

<div class="table_left">
<div class="table_right">
<div class="table_clear">

我只需匹配第三个和其他不属于table_left或table_right的Div类 我试过了:

class="table_(((?!left).*)|((?!right).*))

class="table_(left|right){0}

我在粘贴我的第一个正则表达式线时意识到我匹配不对或没有离开,这两个都返回。指定两个条件的正确方法是什么?和运营商?

搜索同时也是布尔运算符的单词的乐趣...

1 个答案:

答案 0 :(得分:1)

尝试这种模式:

<div\s+class="(?!table_(left|right))[^"]+"

哪个不匹配:

<div class="table_left">
<div class="table_right">

匹配:

<div class="table_clear">
<div class="foo">

修改

  

HT 写道:

     

我只需要匹配以table开头但不是正确或左边的类

啊,好吧,那会是这样的:

<div\s+class="table_(?!left|right)[^"]+"

<div\s+class="table(?!_left|_right)[^"]+"

正如你已经发现的那样(但为了完整起见,我把它包含在我的答案中)。

模式<div\s+class="table_(?!left|right)[^"]+"的快速解释:

<div                         # match '<div'
\s+                          # match one ore more space chars
class="table_(?!left|right)  # match 'class="table_' only if it is not followed by 'left' or 'right'
[^"]+                        # match one or more characters other than '"'
"                            # match a '"'