我有一个字符串
str = "Batman is not batman without alfred batman"
我需要删除batman
(不区分大小写)的所有实例,但是当且仅当它是字符串的第一个单词时才保留batman。
一些例子:
Batman is not batman without alfred batman #=> Batman is not without alfred
## first batman is kept, remaining batman is removed.
batman joker BATMAN robin batMan catwoman #=> batman joker robin catwoman
## removes all other batman instances and keep only the first batman because it is the first word.
joker batMaN alfred batmobile batman #=> joker alfred batmobile
## removes all batman instances because batman is not the first word.
第一个蝙蝠侠实例的情况并不重要。
我尝试了str.gsub(/(batman)+/i,"")
,但它删除了所有实例。当且仅当它是句子中的第一个单词并删除其他batman
时,我如何保留batman
?
答案 0 :(得分:2)
这是一个非正则表达式版本:
str.split.delete_if.with_index do |word,index|
index > 0 and word.downcase == "batman"
end.join(' ')
答案 1 :(得分:1)
一个简单的解决方案是删除前面有空格的所有batman
。
str.gsub!(/ batman/i, '')
行动中:
str = 'batman joker BATMAN robin batMan catwoman'
=> "batman joker BATMAN robin batMan catwoman"
str.gsub!(/ batman/i, '')
=> "batman joker robin catwoman"
答案 2 :(得分:1)
str.gsub!(/(?i)(?<!^)batman/, '')
(?i)
不区分大小写
(?<!^)
看起来线条的开头不是紧接在它之前
答案 3 :(得分:0)
str = "Batman is not batman without alfred, batman's batmanman"
str.gsub(/\sbatman\b/i, '')
#=> "Batman is not without alfred,'s batmanman"
需要使用单词break \b
来避免返回
"Batman is not without alfred,'s man"