我試圖得到這個字符串的第一個單詞:Basic (11/17/2011 - 12/17/2011)
這個字符串的Ruby正則表達式?
所以最終想要得到Basic
。
其他例子字符串:Premium (11/22/2011 - 12/22/2011)
格式始終是「單字後面括號中的日期範圍」,我只是想一個單詞。
我試圖得到這個字符串的第一個單詞:Basic (11/17/2011 - 12/17/2011)
這個字符串的Ruby正則表達式?
所以最終想要得到Basic
。
其他例子字符串:Premium (11/22/2011 - 12/22/2011)
格式始終是「單字後面括號中的日期範圍」,我只是想一個單詞。
你不需要爲正則表達式,你可以使用
str.split(' ')[0]
這將返回第一個單詞,不管它是否出現在括號內的日期範圍之前。它還假定所需的字符串出現在字符串的開頭。 – 2012-04-02 16:16:57
他在自己的問題中說,它總是這種格式。 – 2012-04-02 16:17:42
當日期參數不在字符串中時會發生什麼? – sln 2012-04-02 17:12:36
這個正則表達式將第一個字用在尾隨空間
"^\w+ ??"
我知道你發現你需要的答案,但萬一有人在此跌倒在未來,以拉所需的值了大量的未知長度的10:
word_you_need = s.slice(/(\b[a-zA-Z]*\b \(\d+\/\d+\/\d+ - \d+\/\d+\/\d+\))/).split[0]
'\ b。* \ b'本身與「Basic(2011年11月17日 - 2011年12月17日)」相匹配,甚至「\ b。*?\ b」都與「Basic training」匹配。 – sln 2012-04-02 17:07:51
好點。我已將'\ b。* \ b'更改爲'\ b [a-zA-Z] * \ b'。所以這應該工作,除非預期的單詞有連字符或任何其他特殊字符。 – 2012-04-02 17:34:23
爲什麼不只是'/(\ S * \ s + \(\ d + \/\ d + \/\ d + - \ d + \/\ d + \/\ d + \))/'那麼? – sln 2012-04-06 21:05:14
「單字後面括號中的日期範圍」
「字」和「括號日期範圍」應更好地定義
爲,通過您的要求聲明,他們應該作爲錨點和/或分界線。
這些原始正則表達式只是一個普遍的猜測。
\w+(?=\s*\([^)]*\))
或
\w+(?=\s*\(\s*\d+(?:/\d+)*\s*-\s*\d+(?:/\d+)*\s*\))
其實,你需要的是:
s.split[0]
......或者......
s.split.first
您是否在尋找內的該結構任意通過文字?當前的問題語句只給出在'Basic(2011年11月17日 - 2011年12月17日)'中查找'Basic'的答案。 – RobinGower 2012-04-02 16:23:44