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



例如,我设置如下:

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

使/(#{K}#{V}{2})/"azAZßäÜ"中与"ßäÜ"匹配。

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

我可以把这些常量在一个模块中的文件某处在我的Ruby安装文件夹,所以我可以包括/要求他们在任何新的脚本我写在我的电脑?(我是一个新手,我知道我混淆了这个术语;请纠正我。)

此外,我可以得到只是元字符L, VK(或任何没有在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中,您将很快掌握它的窍门。

对您现在所做的事情的一个小改进是对类别或脚本使用regex unicode支持。

如果您的意思是L是任何字母,使用p{L}。或者如果你想用p{Latin}来表示拉丁字母(所有的德语字母都是)。

我不认为有内置的元音和辅音。

参见p{L} match your example

相关内容

  • 没有找到相关文章

最新更新