2016-07-07 25 views
0

私は、以下の例のようなカスタムマークダウンテキストを解析しようとしています。グループに一致する正規表現

1 
Post:1 
Image:1|thumb 
Image:1|thumb|html classes here 
1|thumb|html classes here 

一般形式:コロンの後にIDを除くModelName:ID|image_size|html classes

すべて(:)はオプションです。 idは文字列でもかまいません。最後のパイプの後には、スペース区切りのCSSクラスがいくつかあります。

^([\w\.]+)?(?::([-\w\d\.]+))(?:\|(\w+))?(?:\|([-\w\s\d]+))?$ 

Regular expression visualization

Debuggex Demo

この正規表現は私が

  1. コロンべき問題を解決する方法を見つけ出すことができないいくつかの問題があります。これは私がこれまで持っているものです後にではなく、メインにマージする行の前に現れます。言い換えれば、グループ1が存在する場合にのみコロンが必要です。 。。グループ3および4
  2. 正規表現は、先頭に最後の3のテストケースと一致していない前に1Post:1が正しく一致している

答えて

1

)あなたはそれを行うことができ|パイプ(のように(同じ考え方

(?:(\w+):)?(\d+)(?:[^|\n]*\|([^|\n]*)(?:\|(.*))?)? 

では4位に第三及びクラスにグループ1の最初のタグ、第二グループにID、画像サイズをキャプチャします。

まずそれをC a タグ(オプション)、数字。さらに、オプションのグループである|をスキャンし、次にすべてを|または行の最後までキャプチャするグループが続いています。 |が見つかった場合は、行末まですべてをキャプチャします。

See it here at regex101

+0

ありがとうございます、それは間違いなく正しい方向への一歩です。しかし、私はグループ内でImageとPostもキャプチャする必要があります。 – danielbker

+0

あなたのコメントごとに編集:) – ClasG

+0

元の正規表現を編集して、同じ回答を得ました!ご協力いただきありがとうございます。あなたは正規表現の専門家です! – danielbker

関連する問題