2017-01-15 11 views
1

私はRememberthemilk.com形式にタスクの記述を解析するためのTextWranglerで使用するための良い正規表現を見つけようとしている。そのように行のような:RegEx特定の後方参照を持つ無期限に繰り返すパターンをキャプチャしますか?

Example task section 1 section tomorrow section tagone tagtwo tagthree tagfour 

がRTM形式に変換whould:

Example task !1 ^tomorrow #tagone #tagtwo #tagthree #tagfour 

ここで私は、逆参照の正しい構文を使って、無期限に繰り返すパターンをどのようにキャプチャするのですか?

私はこの正規表現をしようとしてきた:入力テキストの書式を取り込むように思われ

^([\w ]+) section (\d) section (\w+) section ((\w+))+$ 

が、私はちょうど後方参照で変換を行う方法がわかりませんか?

\1 !\2 ^\3 #(???) 

どうすればよいですか?

+0

置換文字列内の各文字は、正確に一度使用されます。最終グループの各試合で「#」を繰り返す方法はありません。常に同じ数のタグがある場合は、個別に一致させることができますが、そうでないと仮定しています。 – jasonharper

+0

私は、これを置換と後方参照だけで達成することはできないと思います。これをより完全なプログラミング言語で行うと、C#は特定のグループのすべてのキャプチャにアクセスできます。例:https://gist.github.com/Porges/9ba3b7f94f2c14e20feb16c984406e5a#file-example-cs – porges

答えて

0

定量化された構造をキャプチャし、キャプチャグループを定量化しない。

ここで我々はまた、内側部分に括弧(無キャプチャグループ)「のみをグループ化」を使用してクリーンな結果を得るために外をキャプチャ:

([\w ]+) section (\d) section (\w+) section ((?:\w+\s?)+) 

あなたが繰り返しconstuct をしたい()をキャプチャ「グループを繰り返す」とは意味がありません。ほとんどのエンジンでは、一致したグループの最終結果のみがキャプチャされます。

デモ(一部の正規表現エンジンが繰り返さキャプチャグループは、すべてのサブマッチたとえば(.NET)を覚えておくことができるようになりますが):https://regex101.com/r/y3CryR/2

関連する問題