2017-05-28 39 views
0

我試圖創建正則表達式來解析降價鏈接。正則表達式來解析Markdown中的圖像鏈接

正則表達式:

!\[[^\]]*\]\((.*)\s"(.*[^"])"?\s*\) 

測試(link to live demo):

foo 

![](image 2.png "hello world") 

bar 

組1將image 2.png,和組2將hello world

的問題出現時,我嘗試解析鏈接無標題:

foo 

![](image 2.png) 

bar 

我應該如何修改正則表達式,使其在這兩種情況下工作?

+0

模式中的第一個'''不是可選的,所以它不會匹配沒有引用的標題。另外,group1和group2不匹配y你說他們現在做。 – sweaver2112

+0

「另外,group1和group2與您目前所說的不匹配」 - 奇怪。對我而言,它有效。以及在現場演示中。 –

+0

請參閱http://regexr.com/3g221 –

回答

1

你必須使第二組可選,因爲它並不總是在那裏。另外,還可以實現與命名組一點點更好的可讀性,這樣的事情或許是:

!\[[^\]]*\]\((?<filename>.*?)(?=\"|\))(?<optionalpart>\".*\")?\) 

https://regex101.com/r/cSbfvF/3/

或者,你原來的正則表達式搞掂是:

!\[[^\]]*\]\((.*?)\s*("(?:.*[^"])")?\s*\) 

https://regex101.com/r/u2DwY2/2/

+0

謝謝。另外,這裏是我自己的修復:http://regexr.com/3g224。它有多好/壞? –

+0

工作正常。 – sweaver2112