我想在脚本中构造自己的角色类,然后修改(和使用)它,例如:
[:myclass:]
包含a
,*
,\n
(作为换行符)和[WHITESPACE]
。- 我想将所有字符添加到
[:myclass:]
from[:alnum:]
。 - 我想从中删除
p
角色和整个班级[:upper:]
[:myclass:]
首选解决方案不依赖于脚本语言。如果您愿意,请使用bash
.
额外问题:如何在系统范围内存储这个?每当我启动时,[:myclass:]
都必须可用。
答案1
我担心字符类列表在 C 库中是硬编码的(例如在 GNU libc 中,在函数中build_charclass
)posix/regcomp.c
)。扩展它的唯一方法是重新编译 C 库。
您可以自定义区域设置定义中每个现有类的内容。
在大多数情况下,将正则表达式构建为字符串应该足够了:
myclass='a*[:alnum:][:space:]'
regexp="[$myclass]"
您无法通过这种方式从类别中减去字符。如果添加]
or 或-
,请注意\
尊重语言正则表达式中字符类的语法。