正则表达式为ruby中的大写单词

时间:2014-12-23 16:31:35

标签: ruby regex string

我对正则表达式不是很好,所以感谢你在这里提供的任何帮助。

我需要解析一个字符串,如"注册我的午餐"以大写字母提取单词。我使用Ruby。

所以我需要像

这样的东西
string = "sign me up for LUNCH"
keyword = string.gsub(/some_rexex/, '')
# keyword should == 'LUNCH'

再次感谢您的帮助

2 个答案:

答案 0 :(得分:2)

使用string.scan函数代替string.gsub来获取所需的特定字符串。

> "sign me up for LUNCH".scan(/\b[A-Z]+\b/)[0]
=> "LUNCH"

\b称为单词边界,它在单词字符和非单词字符之间匹配。

> "sign me up for LUNCH".scan(/(?<!\S)[A-Z]+(?!\S)/)[0]
=> "LUNCH"
  • (?<!\S)否定的背后隐藏声称匹配不会以非空格字符开头。
  • [A-Z]+匹配一个或多个大写字母。
  • (?!\S)否定前瞻声明匹配不会跟随非空格字符。

答案 1 :(得分:0)

对于正则表达式解决方案,Avinash Raj绝对有正确的解决方案。我想我会为他增加一个替代解决方案。

如果你想完全避免使用正则表达式,你可以反复遍历有问题的字符串,并简单地将每个单词与其upcase值进行比较。

string = "sign me up for LUNCH"
string.split(" ").each do |word|
    if (word == word.upcase)
        puts word
    end
end 

如果您在匹配该词或周围文本时需要对其执行某些操作,此方法会很有用。