【发布时间】:2016-12-20 08:44:02
【问题描述】:
在 perl 中,我想用任何东西替换一个否定的类字符集(除了模式之外的所有字符),只保留预期的字符串。通常,这种方法应该有效,但在我的情况下它不是:
$var =~ s/[^PATTERN]//g;
原字符串:
$string = '<iframe src="https://foo.bar/embed/b74ed855-63c9-4795-b5d5-c79dd413d613?autoplay=1&context=cGF0aD0yMSwx</iframe>';
希望得到的图案:b74ed855-63c9-4795-b5d5-c79dd413d613
(5 个十六进制数字组用 4 个破折号分隔)
我的代码:
$pattern2keep = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
(应仅匹配:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(5 个十六进制数字组,用 4 个破折号分割),字符长度:8-4-4-4-12)
以下内容应该用任何东西代替除了模式之外的所有东西,但实际上它没有。
$string =~ s/[^$pattern2keep]//g;
请问我做错了什么?谢谢。
【问题讨论】:
标签: regex perl substitution