2

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

例如,我想检查一个字符串是否是“你好,我的名字是 Bartholomew”,但我只关心 Bartholomew 的大小写是否正确。我可以:

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

但这太痛苦了。我知道我可以/i在最后忽略整个字符串的大小写:

/^hello, my name is bartholomew$/i

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

4

1 回答 1

9

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

> 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
于 2012-09-18T18:33:02.177 回答