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

标签 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(或任何尚未在 Ruby 中设置)以在正则表达式中代表它们,所以我不必一直做字符串插值?

最佳答案

您的起点不错,但您需要查看由 Ruby 安装的 Regexp 类代码。编写使用字符串插值构建自身的模式有一些技巧。您编写砖 block ,让 Ruby 使用普通的 String 技巧 build 墙壁和房屋,然后将生成的字符串转换为真正的 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 中,您很快就会掌握窍门。

关于ruby - 如何为字母、元音和辅音等德语字符类编写正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16101662/

相关文章:

java - 带有 not 的高级正则表达式

ios - heightForRowAtIndexPath 和自定义 tableviewcell 高度

pdf - 使用 iTextSharp 自定义 PDFStamper

Ruby JSON.parse 返回一个数组

java - 工作正则表达式在 Java 中不起作用

ruby - 在类外部和方法内部创建实例变量是什么意思?

java - 如何在 Java 正则表达式中使用 "and"运算符

matlab - 使颜色条的框架变白,同时保持标签为黑色

ruby - 子类中是否可以访问 Ruby 私有(private)方法?

ruby - 在 mac osX (Lion) 上为 ruby​​ 安装 libyaml