我正在考虑使用正则表达式[0-9a-zA-Z]+
来匹配C ++标准库的正则表达式库中的任何字母数字字符串。
但我担心便携性。当然,在ASCII字符集中,这将起作用,我认为0-9
必须只匹配任何编码系统中的数字,因为标准坚持所有编码都具有此属性。但是C ++标准并没有坚持ASCII编码,所以我的a-zA-Z部分可能会在某些平台上给我奇怪的结果;例如那些使用EBCDIC编码的那些。
我可以使用\d
作为数字部分,但也匹配阿拉伯数字。
应该我用于完全可移植的正则表达式,它只匹配任何一个案例的数字和英文字母?
答案 0 :(得分:0)
似乎PCRE(当前版本为PCRE2)支持其他编码类型,包括EBCDIC。
在他们网站的源代码中,我找到了" this file"以下(格式化我的):
一个名为dftables的程序(与PCRE2一起分发)可用于构建this file的替代版本。如果您在EBCDIC环境中运行,或者您希望默认使用其他编码(例如ISO-8859-1),则必须执行此操作。运行dftables时,它会在当前语言环境中创建这些表。如果PCRE2配置了
--enable-rebuild-chartables
,则会自动发生。
答案 1 :(得分:0)
好吧,如果你担心支持异国情调的编码,你可以手动列出所有字符:
[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]+
这看起来有点脏,但肯定会在任何地方都有用。