"very \n simple example of big"
=> return true because first occurrence moving backwards from example is \n
"very \n\t\t simple example of big"
=> return false because first occurrence moving backwards from example is \n\t\t
这可以通过反向正则表达式查找吗?
答案 0 :(得分:2)
我不确定你到底在寻找什么,但你总是可以扭转字符串并向前匹配:
>> "very \n simple example of big".reverse.match(/elpmaxe[^\t]+\n/)
=> #<MatchData "elpmaxe elpmis \n">
>> "very \n\t\t simple example of big".reverse.match(/elpmaxe[^\t]+\n/)
=> nil
我不确定这是否已经超越了聪明和愚蠢之间的界限,但它适用于你的例子。
答案 1 :(得分:1)
我仍然不完全确定你在寻找什么,但如果它是“找出”示例“一词是否出现在不以任何标签开头的行上,”然后你走了:
ruby-1.9.2-p136 :001 > samples = [ "very \n simple example of big", "very \n\t\t simple example of big" ]
=> ["very \n simple example of big", "very \n\t\t simple example of big"]
ruby-1.9.2-p136 :002 > samples.map{ |s| s[/^[^\t\n]+.+?example/] }
=> [" simple example", nil]
答案 2 :(得分:1)
我不喜欢Ruby,因此给出了我在Javascript中验证的正则表达式:
/\n[^(\t+)]+ example/g
答案 3 :(得分:1)
问题不太明确,但我认为这是你想要的,使用negative lookahead:
^(?!\t\t).*example
示例:http://rubular.com/r/DRdlscH6cO
这里我使用^
作为行的开头(如果您愿意,可以使用\n
,但它与第一行不匹配)。默认情况下,.
与其他行不匹配,所以它也是安全的
您可能还想添加捕获组,并且只匹配整个单词:
^(?!\t\t)(.*)\bexample\b
正则表达式不允许包含example
的行,并以\t\t
开头。该行可以从单个\t
开头,也可以在其他地方有\t\t
。