我正在尝试从MFC的* .rc文件中提取每种语言的信息。
所以,我发现“LANGUAGE LANG_([\s\S]*?)#endif(.*)\n/{1,}
”正在为http://regexpal.com/
:
LANGUAGE LANG_Language1, SUBLANG_XXX
#pragma code_page()
:
END
#endif // Language1 resources
/////////////////////////////////////////////////////////////////////////////
:
LANGUAGE LANG_Language2, SUBLANG_XXXX
#pragma code_page()
:
END
#endif // Language2 resources
/////////////////////////////////////////////////////////////////////////////
:
而且,我已经通过perl编写了关于正则表达式的编程。
$rc_file = read_file($ARGV[0]);
@LANG = ($rc_file =~ /LANGUAGE LANG_([\s\S]*?)#endif(.*)\n\/{1,}/g);
我期望得到每个@LANG元素形式,如下面的文本。
LANGUAGE LANG_Language1, SUBLANG_XXX
#pragma code_page()
:
END
#endif // Language1 resources
/////////////////////////////////////////////////////////////////////////////
但是,我收到了这两种类型。 偶数元素就是这样,
Language1, SUBLANG_XXX
#pragma code_page()
:
END
和奇数元素是这样的。 //语言1资源
我无法理解我使用了相同的正则表达式,但它返回时没有一些字符串。 我应该用另一种格式包装正则表达式吗?或者我做错了吗?
答案 0 :(得分:1)
这是因为不必要的括号。您可以从存储在阵列中的组中获取数据。这是工作代码:
my @LANG = ($rc_file =~ /LANGUAGE LANG_[\s\S]*?#endif.*\n\/{1,}/g);