【发布时间】:2012-08-04 18:50:21
【问题描述】:
我正在编写一些需要序列化 Perl 正则表达式的代码,包括任何正则表达式标志。仅支持标志的子集,因此我需要检测不支持的标志(如 /u)何时在正则表达式对象中。
当前版本的代码是这样做的:
static void serialize_regex_flags(buffer *buf, SV *sv) {
char flags[] = {0,0,0,0,0,0};
unsigned int i = 0, f = 0;
STRLEN string_length;
char *string = SvPV(sv, string_length);
然后手动处理string char-by-char 以查找标志。
这里的问题是正则表达式标志的字符串化从例如更改(我认为在 Perl 5.14 中) (?i-xsm:foo) 到 (?^i:foo),这让解析很痛苦。
我可以检查perl 的版本,或者只是编写解析器来处理这两种情况,但有件事告诉我必须有一个更好的自省方法可用。
【问题讨论】:
标签: c regex perl introspection xs