使用负前瞻正则表达式检测缺失的 ID 字段
Detect missing ID field using negetive look-ahead regex
我有一个文件内容为:-
$form->AddFields({
id => 2048
type => 'hidden',
name => 'xyz',
value => 0,
});
$form->AddFields({
type => 'hidden',
name => 'xyz',
value => 0,
});
$form->AddFields({
type => 'hidden',
name => 'xyz',
id => 1024,
value => 0,
});
$form->AddFields({
type => 'hidden',
name => 'abc',
value => 10,
});
现在,我需要找到那些没有 ID 字段的 AddFields 函数 (id=>)。
我已经使用 awk 命令完成了它:-
awk '/form->AddFields/{ printf /id =>/? FS: [=11=] RS}' RS='});'
但我需要使用正则表达式做同样的事情。我知道我们需要使用消极的前瞻功能。但是我不知道该怎么做。
预期输出:-
$form->AddFields({
type => 'hidden',
name => 'xyz',
value => 0,
});
$form->AddFields({
type => 'hidden',
name => 'abc',
value => 10,
});
正则表达式可以比 awk 稍长
/$form->AddFields\({(?![^}]+id =>)[^}]+}\);/
这似乎有效:
$form->AddFields([^)](?!\sid =>))+\);
见demo
我有一个文件内容为:-
$form->AddFields({
id => 2048
type => 'hidden',
name => 'xyz',
value => 0,
});
$form->AddFields({
type => 'hidden',
name => 'xyz',
value => 0,
});
$form->AddFields({
type => 'hidden',
name => 'xyz',
id => 1024,
value => 0,
});
$form->AddFields({
type => 'hidden',
name => 'abc',
value => 10,
});
现在,我需要找到那些没有 ID 字段的 AddFields 函数 (id=>)。 我已经使用 awk 命令完成了它:-
awk '/form->AddFields/{ printf /id =>/? FS: [=11=] RS}' RS='});'
但我需要使用正则表达式做同样的事情。我知道我们需要使用消极的前瞻功能。但是我不知道该怎么做。
预期输出:-
$form->AddFields({
type => 'hidden',
name => 'xyz',
value => 0,
});
$form->AddFields({
type => 'hidden',
name => 'abc',
value => 10,
});
正则表达式可以比 awk 稍长
/$form->AddFields\({(?![^}]+id =>)[^}]+}\);/
这似乎有效:
$form->AddFields([^)](?!\sid =>))+\);
见demo