正则表达式 – 确定正则表达式中存在哪些命名捕获?
发布时间:2020-12-14 05:36:39 所属栏目:百科 来源:网络整理
导读:给定带有命名捕获的正则表达式,是否可以确定re中存在哪些命名捕获? 注意:我只有正则表达式 – 我没有匹配re的字符串.我想知道是否有办法查看re的结构并找到re中使用的所有命名捕获. 解决方法 在一般情况下,这是不可能的,因为有人可能会有一个(?? {….})代
给定带有命名捕获的正则表达式,是否可以确定re中存在哪些命名捕获?
注意:我只有正则表达式 – 我没有匹配re的字符串.我想知道是否有办法查看re的结构并找到re中使用的所有命名捕获. 解决方法
在一般情况下,这是不可能的,因为有人可能会有一个(?? {….})代码插入变成在匹配执行时使用迄今看不见的名称的命名捕获的东西.
在特定情况下,您可以从C API深入了解底层结构. Devel :: Peek建议你可能想要一些地方: % perl -MDevel::Peek -le 'Dump qr/(?<foo>w+) (?&foo)/' SV = IV(0x8033ac) at 0x8033b0 REFCNT = 1 FLAGS = (TEMP,ROK) RV = 0x803d40 SV = REGEXP(0x8173d8) at 0x803d40 REFCNT = 1 FLAGS = (OBJECT,POK,FAKE,pPOK) PV = 0x216fc0 "(?^:(?<foo>w+) (?&foo))" CUR = 24 LEN = 0 STASH = 0x803b50 "Regexp" EXTFLAGS = 0x600000 (USE_INTUIT_NOML,USE_INTUIT_ML) INTFLAGS = 0x1 NPARENS = 1 LASTPAREN = 0 LASTCLOSEPAREN = 0 MINLEN = 3 MINLENRET = 3 GOFS = 0 PRE_PREFIX = 4 SEEN_EVALS = 0 SUBLEN = 0 SUBBEG = 0x0 ENGINE = 0x162b60 MOTHER_RE = 0x80fab0 PAREN_NAMES = 0x80fa40 SUBSTRS = 0x2044b0 PPRIVATE = 0x206360 OFFS = 0x204280 例如,PAREN_NAMES看起来很有前景. 但这似乎很多工作.你想做什么? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |