Regex 正则表达式求反字符串
我想要一个正则表达式来查找所有不包含td的tr标记Regex 正则表达式求反字符串,regex,string,notepad++,regex-negation,Regex,String,Notepad++,Regex Negation,我想要一个正则表达式来查找所有不包含td的tr标记 <tr asdf> <td> <hello> </td> </tr> <tr asdf> </tr> 我只想找到代码中的最后两行。下面是正则表达式的模板: <tr.*?>(Cannot figure this section out)</tr> (无法理解此部分) 您可以使用这种模式: <tr[^>]*>(?&g
<tr asdf>
<td>
<hello>
</td>
</tr>
<tr asdf>
</tr>
我只想找到代码中的最后两行。下面是正则表达式的模板:
<tr.*?>(Cannot figure this section out)</tr>
(无法理解此部分)
您可以使用这种模式:
<tr[^>]*>(?>[^<]+|<(?!td\b|/tr>))*</tr>
]*>(?>[^#一个tr标签,里面有你想要的东西
(?>#打开一个原子群(像一个非捕获的
#组,但在关闭后禁止回溯)
[^
)*#零次或多次
或者这一个(大部分时间较慢):
(?s)]*>(?:(?!)*>((?!)*
试试这个。设置g
和s
标志。参见演示
@developer234:但是,请注意,如果您有嵌套的tr标记,这两种模式就不起作用。@AvinashRaj:有许多不同的情况需要处理,需要反思,但反思从教条开始就停止了。:)
<tr[^>]*> # a tr tag with whatever you want inside
(?> # open an atomic group (like a non-capturing
# group but forbids backtracking once it is closed)
[^<]+ # all that is not a <
| # OR
<(?!td\b|/tr>) # a < not followed by td or /tr>
)* # zero or more times
</tr>
(?s)<tr[^>]*>(?:(?!<td\b).)*?</tr>
<tr[^>]*>((?!<\/tr>|<td>|<\/td>).)*<\/tr>