2014-03-12 31 views
-2

我有一個關鍵字列表叫[貓,狗,鳥]和一個正則表達式來找到一個權重(\ dlbs)。查找兩個字符串之間有最大數量的字符

我只是想找到的項目,

  1. 開始與數組中的項目
    • (貓|狗|?鳥)
  2. 比賽重正則表達式
    • (\ dlbs)
  3. 僅1和2之間 有30個字符(不包括空格)一個最大
    • 不想或照顧捕捉1-30個字符

感謝任何幫助!

+3

什麼是字符串你有? –

+0

downvotes(和投票結束)是從誰相信你的問題是不清楚的讀者。字符串看起來像是「貓20磅,狗60磅,鳥450磅」還是「我的貓重20磅,我的狗60磅,450磅的大鳥尖」或其他什麼東西?是每個「物品」你想要找到一個數組(例如'['狗',60]'),一個子字符串(「狗是60磅」)還是其他?用一個方法'doit(str)'來想想這個。你想讓'doit'返回幾個示例字符串中的每一個(包括'貓狗40磅'等'邊緣情況')。通過編輯你的問題來做到這一點(不帶評論),毫不拖延。 –

+0

我很抱歉,SO的難點之一是你必須提出一個問題,同時晦澀的實際數據足以滿足......「客戶」。當我發現我的(愚蠢的)錯誤時,我覺得埃德應該得到他的及時和適當答案的榮譽。但是,如果你決定關閉它,我會明白。 – Rabbott

回答

1

這將做到這一點:

(cat|dog|bird)\s*(?:(?:\S\s*){0,30})(\dlbs) 

Regular expression visualization

Debuggex Demo

編輯,以體現 「不計空格」 點。

匹配,例如,每個以下的:

The cat weighs almost exactly 7lbs. 
The cat weighs       almost exactly 7lbs 

注意:您似乎對你的問題流浪?(cat|dog|bird?) - 我已經忽略了它。另外,你確定你有\dlbs,而不是17 lbs17 pounds?您可以輕鬆地解決這些場景與

(cat|dog|bird)\s*(?:(?:\S\s*){0,30})(\d\s*(?:lb|pound)s) 
+0

謝謝埃德!我嘗試過,但似乎沒有捕獲我想要做的事情.. – Rabbott

+0

怎麼樣?空白部分? –

+0

請參閱我的編輯以解決空白問題。 –

1

(\s*.){0,30}最多30個字符不含空格:

(cat|dog|bird)(\s*.){0,30}\s*(\dlbs) 
相關問題