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脚本扩展。他们已经经受了考验,并经过了顽强的战斗。