我想知道是否可以将表达式中的值用作表达式第二部分的变量
目标是从内存转储中提取一些特定的字符串。字符串的一部分基于(或多或少)固定结构,可以使用正则表达式很好地描述。问题是字符串的第二部分,它具有可变长度而没有“页脚”或任何可以“匹配”为“END”的内容。 相反,第一部分的第2位有一个长度指示器。
这是一个简化的示例字符串,它喜欢在大文件中找到(所有其他文件)
00 24 AA BB AA DD EE FF GG HH II JJ ###########(#beeing不需要的数据)
让我们假设主结构总是00 XX AA BB AA - 但最后一部分(从DD开始)将根据XX的值为每个字符串的长度变化
我知道这可以在正则表达式之外的代码中完成,但我很好奇,如果它可能:)
答案 0 :(得分:2)
简答:否
答案很长:
您可以通过两个步骤实现您想要的目标:
PSEUDO CODE
s:='00 24 AA BB AA DD EE FF GG HH II JJ ###########'
re:=/00 (\d{2}) AA BB AA/
if
s::matches(re)
then
match := re::match(s)
len := matches(1)
dynamicRE := new Regexp(re::toString() + ' (?:[A-Z]{2} ){' + len + '}')
// dynamicRE == /00 (\d{2}) AA BB AA (?:[A-Z]{2} ){24,24}/
if s::matches(dynamicRE) then
// MATCH !!
else
// NO MATCH !!
end if
end if