2016-11-03 58 views
0

我想通過使用正則表達式從較少的css預處理器源代碼文件中提取變量,但我的問題可以更普遍地提出。正則表達式在捕獲組後不包含匹配

我需要製作一個正則表達式是這樣的:

  • 輸入@one: cat輸出cat
  • 輸入@one: dog;輸出dog

注意我希望不能捕獲的'狗'後的最後一個分號。

我有這幾乎工作:new RegExp('^.*:\\s*(.*?);?');

但我最終;?沒有被排除在比賽(.*?)

如何讓我的選擇不那麼貪婪?

JsBin:http://jsbin.com/ludaqogexa/edit?js,console

+0

你真的需要做一個字符串替換,或者你是否試圖將字符串設置爲僅捕獲的組? – HeadCode

回答

3

使他們「貪心不足」是量詞後加入?像你一樣做。問題是你還沒有添加結束符$ - 如果你添加你的正則表達式將按預期工作。該角落案件的行爲取決於正則表達式引擎;例如,.NET引擎只能匹配該情況下的單個字符(d用於dog的情況)並停止。

但是,這不是解決方案恕我直言。你應該更精確地描述模式,然後它甚至可以用貪婪的匹配工作。

/^[^:]+:\s*([^;]+);?/; 
+0

你碰巧知道爲什麼OP原始嘗試不工作?我很感興趣......爲什麼是捕捉組的一部分? – musefan

+0

@musefan用原始正則表達式中的問題解釋進行編輯。 – Lucero

+0

@Lucero謝謝你,很好的解釋和更好的方法 –

相關問題