2013-07-10 48 views
0

我只在匹配確切時才捕獲字符串。僅在與ruby完全匹配時捕獲字符串

I.e.valid:

/this-is-an-exact-matc 
/this-is-also-an-exact-match 
/this-is-other-exact-match?d=1 
/balbabla 

無效:

/this-is-not/fafa/fafa 
/dede/ddd/dfsfd 
/

正如你可以只是一個路徑級別必須算作一個有效的字符串。 我與努力:

\/(.*) 

...但是這也驗證爲真像/ bbalbalb/blablba

感謝

回答

2

也許這:

string =~ %r{\A/[^/]+\z} 

要得到什麼,你在評論問,試試這個:

string[%r{(?<=\A/)(?=[^/]+\z)([^?]+)}] 
+0

謝謝,只是一個問題更多:我用\ A \ /([^ \ /] +)\ z取得所有,但/。鑑於「/爸爸?var = 1」,我怎麼才能拿到「爸爸」? – ratamaster

+0

@ratamaster爲什麼你需要'regex'來做這個測試。爲什麼不是非正則表達式解決方案? –

+0

@ratamaster你是否在意'''後面是否出現斜線? – sawa

0
def valid?(s) 
    s.count('/') == 1 
    end 
    valid?('/this-is-not/fafa/fafa') # => false 
    valid?('/balbabla') # => true 

UPDATE(按照@CasimiretHippolyte評論)

def valid?(s) 
    s.rindex('/') == 0 
    end 
    valid?('/this-is-not/fafa/fafa') # => false 
    valid?('/balbabla') # => true 
+0

** ** Downvoter - 爲什麼?請邏輯。 –

+1

我不是你的downvoter,但請注意,你的函數返回有效的'blablabla/blablabla' –

+0

@CasimiretHippolyte感謝您的反饋!但這也不是一個有效的途徑。並且OP在給定的例子中也沒有提及,所有的路徑必須至少用一個'/'開始,按照OP,它被認爲是* valid *。 –