问题 在一行中查找不区分大小写的单词匹配


我需要在一行中查找所有出现的单词,但搜索必须不区分大小写。我还需要在正则表达式中添加什么?

arr = line.scan(/\s+#{word}\s+/)

2689
2018-01-06 05:46


起源



答案:


你需要修饰语 /i

arr = line.scan(/\b#{word}\b/i)

http://www.tutorialspoint.com/ruby/ruby_regular_expressions.htm

而且更好用 \b 对于单词边界,因为第二个 \s+ 在你的正则表达式  空间,可用于第一个 \s+ 另一个匹配的词;你的正则表达式在行的开头和结尾都失败了:

> "asd asd asd asd".scan /\s+asd\s+/
=> [" asd "]
> "asd asd asd asd".scan /\basd\b/
=> ["asd", "asd", "asd", "asd"]

16
2018-01-06 05:50



哇,这很容易哈哈,我需要等待7分钟才能接受你的回答。谢谢。 - Flethuseo


答案:


你需要修饰语 /i

arr = line.scan(/\b#{word}\b/i)

http://www.tutorialspoint.com/ruby/ruby_regular_expressions.htm

而且更好用 \b 对于单词边界,因为第二个 \s+ 在你的正则表达式  空间,可用于第一个 \s+ 另一个匹配的词;你的正则表达式在行的开头和结尾都失败了:

> "asd asd asd asd".scan /\s+asd\s+/
=> [" asd "]
> "asd asd asd asd".scan /\basd\b/
=> ["asd", "asd", "asd", "asd"]

16
2018-01-06 05:50



哇,这很容易哈哈,我需要等待7分钟才能接受你的回答。谢谢。 - Flethuseo