正则表达式,用于查找不以标签开头的字符串部分

时间:2014-04-30 06:02:20

标签: ruby regex

我有一个字符串

#this is a #new day at #lf_technology and is #awes0me #Nepal #hattiban peace

使用(#[a-zA-Z0-9_]+)正则表达式,我可以提取主题标签#this, #new, #lf_technology, #awes0me, #Nepal, #hattiban

我需要一个reg ex来提取is a, day at, and is, peace

以下是我用来测试http://rubular.com/r/6i9HJUVFFa

的内容

3 个答案:

答案 0 :(得分:3)

你可以简单地寻找

/((^| )[a-zA-Z0-9_ ]+)/

http://rubular.com/r/ypEsQY1lhM

除了#_之外的每个字符都是:

/((^| )[^#_]+)/

http://rubular.com/r/9GhP87HFzn

如下面的评论所示,这将产生带有尾随空格的结果,因此要正确使用它,您需要strip结果:

s.scan(/( [a-zA-Z0-9_ ]+)/).flatten.map(&:strip)
# => ["is a", "day at", "and is", "peace"] 

答案 1 :(得分:1)

尝试:

/((\s[a-zA-Z]+)+)/

提取is a, day at, and is, peace

参考:http://rubular.com/r/t2TWE7BXzU

希望有所帮助:)

答案 2 :(得分:0)

你可以试试这个:

(?<=\s)\w[^#]*(?!#)

演示:http://regex101.com/r/sI6uE2

=> irb
=> s = "#this is a #new day at #lf_technology and is #awes0me #Nepal #hattiban peace"
=> s.scan(/(?<=\s)\w[^#]*(?!#)/)
=> ["is a", "day at", "and is", "peace"]