2010-03-08 68 views
20

我怎麼能匹配2個指定的字符之間的所有字符,說" " - > 從sdfsf " 12asdf " sdf正則表達式之間找到字符「」

我想只得到12asdf。如果你想捕捉排除之間的「」一切

"(.*?)" 

"([^"]*)" 

+1

什麼是你希望得到什麼?它沒有返回領先的空白嗎?向我們展示您正在使用的正則表達式,並將示例結果放在代碼塊中。 – Robusto 2010-03-08 16:27:43

回答

61

您可以使用以下模式" "之間得到的一切,包括前端和後端空格您可以執行的前後空格:

"\s*(.*?)\s*" 

"\s*([^"]*)\s*" 
+0

同意。確保查找任何可以在「非貪婪」(vs「貪婪」)表達式上找到的東西。如果你還不知道它應該是一個有趣的閱讀。如果你知道其中的差異,它肯定會讓你的生活更加容易。 – exhuma 2010-03-08 16:38:54

0

您可以使用preg_match(/"([^"]*)"/,$input,$matches);$matches[1]會有你想要的。

5

我建議你使用

(?<=")(?:\\.|[^"\\])*(?=") 

這將只匹配什麼是報價(不包括引號本身),並正確處理您的字符串內轉義引號之間。

所以在"She said, \"Hi!\"",它將匹配She said, \"Hi!\"

如果你正在使用JavaScript或Ruby(你沒有提到),因此不能使用回顧後,使用

"((?:\\.|[^"\\])*)" 

,並與捕獲組的工作沒有。 1.

+0

這並沒有處理我或本頁上的轉義引號https://regex101.com/ – Don 2016-02-11 01:00:52

+0

@Don:你能否提供非工作正則表達式的鏈接(點擊保存正則表達式併發布該鏈接)? – 2016-02-11 07:14:52

-1
[^"].*[^"] 

如果你輸入:「埃利」,它會給埃利(注:不包括引號)

相關問題