是否有一种简单的方法可以忽略正则表达式的一部分?我正在使用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
但是我不能拆分字符串(正则表达式和字符串本身都由用户输入)。
答案 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