忽略正则表达式的一部分的大小写

时间:2012-09-18 18:28:12

标签: ruby-on-rails ruby regex

是否有一种简单的方法可以忽略正则表达式的一部分?我正在使用Ruby 1.9.3和Rails 3.2.8(不确定Rails是否有帮助,但我想我会提到它。)

例如,我想检查一个字符串是否为“你好,我的名字是巴塞洛缪”,但我只关心巴塞洛缪有适当的大写字母。我能做到:

/^[Hh][Ee][Ll][Ll][Oo], [Mm][Yy] [Nn][Aa][Mm][Ee] [Ii][Ss] Bartholomew$/

但那是一种痛苦。我知道我可以在最后用/i忽略整个字符串的大小写:

/^hello, my name is bartholomew$/i

但是我不能拆分字符串(正则表达式和字符串本身都由用户输入)。

1 个答案:

答案 0 :(得分:8)

这是一种方法,通过默认情况下使正则表达式区分大小写并标记不敏感的部分:

> pattern = /(?i:hello, my name is) Bartholomew/
=> /(?i:hello, my name is) Bartholomew/
> pattern =~ 'Hello, my Name is Bartholomew'
=> 0
> pattern =~ 'Hello, my Name is bartholomew'
=> nil

另一种方法是默认情况下使正则表达式不区分大小写,并标记敏感部分:

> pattern = /hello, my name is (?-i:Bartholomew)/i
=> /hello, my name is (?-i:Bartholomew)/i
> pattern =~ 'Hello, my Name is Bartholomew'
=> 0
> pattern =~ 'Hello, my Name is bartholomew'
=> nil