我正在尝试删除关键字右侧的文字。我有这样的文字:
a = "` 27 3 4400 Local/STD secs Hide Hide ` View Detail More List."
我想删除'Hide'
及其右侧的所有文字。
我尝试通过正则表达式执行此操作:
a.scan(/?:Hide/)
它只是让我出现了'Hide'
。
答案 0 :(得分:3)
答案 1 :(得分:3)
partition
会很简单。
a.partition("Hide").first
答案 2 :(得分:2)
无需使用正则表达式
使用子字符串方法和String#index
。
index = a.index('Hide') # Get the index of `Hide` and subtract by one
substring = a[0...index] # Get substring from zero'th index to the index of Hide
示例:
a = "27 3 4400 Local/STD secs Hide Hide blah blah blah"
a[0...a.index('Hide')]
#=> "27 3 4400 Local/STD secs "
答案 3 :(得分:2)
您说要删除keyword
标识的文字,而不是substring
标识的文字。为此,我建议你使用正则表达式:
r = /
.*? # Match any characters any number of times, lazily
(?= # Begin a positive lookahead
\bHide\b # Match 'Hide' preceded and followed by a word break
) # end positive lookahead
/x # Extended/free-spacing regex definition mode
"Blah, blah Hide Hide blah, blah"[r]
#=> "Blah, blah "
"Hideous blah, blah Hide Hide blah, blah"[r]
#=> "Hideous, blah, blah "
请注意懒惰的需要:
"Blah, blah Hide Hide blah, blah"[/.*(?=\bHide\b)/]
#=> "Blah, blah Hide "
编辑:一个更简单(更好)的解决方案将是@AvinashRaj在问题评论中提出的建议,修改后我在另一条评论中提出修改。