我对正则表达式不是很好,所以感谢你在这里提供的任何帮助。
我需要解析一个字符串,如"注册我的午餐"以大写字母提取单词。我使用Ruby。
所以我需要像
这样的东西string = "sign me up for LUNCH"
keyword = string.gsub(/some_rexex/, '')
# keyword should == 'LUNCH'
再次感谢您的帮助
答案 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
如果您在匹配该词或周围文本时需要对其执行某些操作,此方法会很有用。