如何为字母,元音和辅音等德语字符类编写正则表达式?

Owe*_*n_R 6 ruby regex customization character-class metacharacters

例如,我设置了这些:

L = /[a-z,A-Z,ßäüöÄÖÜ]/
V = /[äöüÄÖÜaeiouAEIOU]/
K = /[ßb-zBZ&&[^#{V}]]/
Run Code Online (Sandbox Code Playgroud)

这样/(#{K}#{V}{2})/匹配"ßäÜ""azAZßäÜ".

有没有更好的方法来处理它们?

我可以将这些常量放在我的Ruby安装文件夹中某个文件的模块中,所以我可以在我在计算机上写的任何新脚本中包含/要求它们吗?(我是新手,我知道我弄糊涂这个术语;请纠正我.)

此外,我可以只获得元字符\L,\V\K(或者在Ruby中没有设置的任何东西)在正则表达式中代表它们,所以我不必一直做那个字符串插值的东西吗?

the*_*Man 1

您已经开始得很好,但您需要查看 Ruby 安装的 Regexp 类代码。编写使用字符串插值构建自身的模式有一些技巧。您编写积木,让 Ruby 使用普通的字符串技巧来建造墙壁和房屋,然后将生成的字符串转换为真正的 Regexp 实例以在代码中使用。

例如:

LOWER_CASE_CHARS = 'a-z'
UPPER_CASE_CHARS = 'A-Z'
CHARS = LOWER_CASE_CHARS + UPPER_CASE_CHARS
DIGITS = '0-9'

CHARS_REGEX = /[#{ CHARS }]/
DIGITS_REGEX = /[#{ DIGITS }]/

WORDS = "#{ CHARS }#{ DIGITS }_"
WORDS_REGEX = /[#{ WORDS }]/
Run Code Online (Sandbox Code Playgroud)

您不断地从小的原子字符和字符类开始构建,很快您就会拥有大的正则表达式。尝试将它们一一粘贴到 IRB 中,您很快就会掌握它的窍门。