【发布时间】:2018-08-27 14:51:13
【问题描述】:
在我的 PCRE 正则表达式中,我使用了原子组来减少回溯。
<\/?\s*\b(?>a(?:bbr|cronym|ddress|pplet|r(?:ea|ticle)|side|udio)?|b(?:ase|asefont|d[io]|ig|lockquote|ody|r|utton)?|c(?:anvas|aption|enter|ite|ode|ol(?:group)?)|d(?:ata(?:list)?|[dlt]|el|etails|fn|ialog|i[rv])|em(?:bed)?|f(?:i(?:eldset|g(?:caption|ure))|o(?:nt|oter|rm)|rame(?:set)?)|h(?:[1-6r]|ead(?:er)?|tml)|i(?:frame|mg|nput|ns)?|kbd|l(?:abel|egend|i(?:nk)?)|m(?:a(?:in|p|rk)|et(?:a|er))|n(?:av|o(?:frames|script))|o(?:bject|l|pt(?:group|ion)|utput)|p(?:aram|icture|re|rogress)?|q|r[pt]|ruby|s|s(?:amp|ection|elect|mall|ource|pan|trike|trong|tyle|ub|ummary|up|vg)|t(?:able|body|[dhrt]|emplate|extarea|foot|head|ime|itle|rack)|ul?|v(?:ar|ideo)|wbr)\b
但在示例调试中,我看到f 检查结束后,它会进一步用于其他选项。我试图在f 检查失败后停止它,因此它不会检查表达式的其余部分。怎么了?
【问题讨论】:
-
哇,对于这么短的字符串来说,这是一个长模式。你能提供更多你想要匹配的字符串的例子吗?
-
@UnbearableLightness:我正在尝试匹配字符串中的任何 HTML 标签。匹配步骤很好,但是检查不是 HTML 标签的其他标签(等 XML)的步骤太多了(
GET ) -
这是因为正则表达式的性能对我来说很重要