正则表达式给出编译器错误
本文关键字:错误 编译器 正则表达式 | 更新日期: 2023-09-27 17:57:10
<('w+)'b(?:'s+['w'-.:]+(?:'s*='s*(?:"[^"]*"|'[^']*'|['w'-.:]+))?)*'s*/?>'s*</'1's*>
以上是我从删除所有空 HTML 标签中获取的正则表达式?我正在尝试在下面使用相同的内容:-
string regex= @"<('w+)'b(?:'s+['w'-.:]+(?:'s*='s*(?:"[^"]*"|'[^']*'|['w'-.:]+))?)*'s*/?>'s*</'1's*>";
我收到许多编译错误,例如 - 在上面行本身的常量、无法识别的转义序列中换行。
有人可以帮助我指出我错过了什么吗?
您需要
在字符串内使用双引号""
:
string regex= @"<('w+)'b(?:'s+['w'-.:]+(?:'s*='s*(?:""[^""]*""|'[^']*'|['w'-.:]+))?)*'s*/?>'s*</'1's*>";
正则表达式中有双引号需要加引号。
string regex= @"<('w+)'b(?:'s+['w'-.:]+(?:'s*='s*(?:"[^"]*"|'[^']*'|['w'-.:]+))?)*'s*/?>'s*</'1's*>";
应该是
string regex= @"<('w+)'b(?:'s+['w'-.:]+(?:'s*='s*(?:'u0022[^'u0022]*'u0022|'[^']*'|['w'-.:]+))?)*'s*/?>'s*</'1's*>";
顺便说一句,由于<'/'1's*>
这只会删除空间周围的平衡标签。 它将匹配<p> </p>
但不<img src=bogus onerror=alert(1337)>
.
即使您只想删除空间周围的平衡标签,请注意,这不会匹配所有此类标签。 具体来说,它不会匹配标签名称因大小写而异的标签:<p> </P>
.
最后,它不会删除可传递的空标签:<i><b></b></i>
-> <i></i>
。
单双引号("
)必须在逐字字符串中用双双引号(""
)进行转义。
试试这个
string regex= @"<('w+)'b(?:'s+['w'-.:]+(?:'s*='s*(?:""[^""]*""|'[^']*'|['w'-.:]+))?)*'s*/?>'s*</'1's*>";