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

Ruby 如何为字母、元音和辅音等德语字符类编写正则表达式?,ruby,regex,customization,character-class,metacharacters,Ruby,Regex,Customization,Character Class,Metacharacters,例如,我设置了以下各项: L = /[a-z,A-Z,ßäüöÄÖÜ]/ V = /[äöüÄÖÜaeiouAEIOU]/ K = /[ßb-zBZ&&[^#{V}]]/ 所以/(#K}{V}{2})/匹配中的“azAZßÜ” 有没有更好的办法来对付他们 我可以把这些常量放在Ruby安装文件夹中某个模块的某个文件中,这样我就可以在我在计算机上编写的任何新脚本中包含/要求它们了吗?(我是个新手,我知道我把这个术语弄糊涂了;请纠正我。) 此外,我可以只使用元字符\L、\V和\K(或

例如,我设置了以下各项:

L = /[a-z,A-Z,ßäüöÄÖÜ]/
V = /[äöüÄÖÜaeiouAEIOU]/
K = /[ßb-zBZ&&[^#{V}]]/
所以
/(#K}{V}{2})/
匹配
中的
“azAZßÜ”

有没有更好的办法来对付他们

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


此外,我可以只使用元字符
\L
\V
\K
(或者Ruby中尚未设置的任何字符)在正则表达式中代表它们吗,这样我就不必一直做字符串插值了?

你开始得很好,但是您需要查看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 }]/

你继续从小的原子字符和字符类构建,很快你就会有大的正则表达式。尝试将这些内容一个一个地粘贴到IRB中,您将很快掌握窍门。

您现在所做的一个小改进就是使用

如果您的意思是
L
是任何字母,请使用
\p{L}
。或者,如果希望它表示拉丁语脚本中的任何字母(所有德语字母都是),请使用
\p{Latin}

我认为元音和辅音没有内置的


请参见
\p{L}

您的方法似乎非常合理。你可以这样缩短K:
/[b-zB-Z&[^aeiouAEIOU]]/
,如果你愿意的话。哦,谢谢,很高兴知道我可以使用这个语法^^您的“安装文件夹中的模块”是一个gem。请参阅以了解更多详细信息。哦,谢谢,是的,我只是将常量放在同一文件夹中的另一个文件中,并将
require'/.constants.rb'
放在该文件夹中我需要使用它们的任何脚本中。现在可以使用了。请务必查看标准字符类的POSIX和Unicode脚本扩展。他们已经经受了考验,并经过了顽强的战斗。