2017-05-28 11 views
0

マークダウンリンクを解析する正規表現を作成しようとしています。Regexが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は、彼らが現在していると言います。 – sweaver2112

+0

"また、group1とgroup2は、あなたが現在行っていることとは一致しません" - Strange。私のために、それは動作します。また、ライブデモと同様に。 –

+0

http://regexr.com/3g221 –

答えて

1

2番目のグループは常に存在するとは限りませんので、オプションにする必要があります。また、あなたが名前付きグループ、おそらくこのような何かで少し読みやすく達成することができます。また

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

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

を、アップ固定元の正規表現は次のようになります。

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

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

+0

ありがとうございます。また、ここに私自身の修正があります:http://regexr.com/3g224。どのように良い/悪いですか? –

+0

うまく動作します。 – sweaver2112

関連する問題