2015-05-11 57 views
1

我有一條線:如何在找到匹配後強制終止正則表達式搜索?

hostname = "serv1.namespace.com",和正則表達式:^\s*hostname[A-Z]*\s=?\s"?(.*?)"?,?$

這可以按照大多數情況(我希望將信息放在引號中)工作,但是如果我在字符串的末尾添加任何字符(包括空格),那麼超出第一個"的所有內容都將添加到匹配組。有沒有辦法迫使比賽組只有是什麼在報價中,並基本上只是在遇到",後停止搜索?

編輯:如果有人有這更好的標題,通過各種手段......

+0

看看非貪心匹配 –

回答

1

爲了阻止第一次報價後搜索發現,在發生不情願點星級.*?的使用[^\"]*。這樣發動機就會在找到最接近的雙引號後停下來。你也將防止潛在的catastrophic backtracking

^\s*hostname[A-Z]*\s=?\s"?([^\"]*)"?,?$ 
相關問題