2017-06-14 9 views
-1

私は例えば、見出し間の任意のコンテンツをキャプチャする正規表現式を作成しようとしています:マッチ何も - 正規表現PowerShellの

***** Heading1 ******** 
content 
more content 
more content 

***** Heading2 ******** 
content 
more content 
more content 

... 

だけ明確にするために、私は各部分で私は同様に私がいる問題について説明しますが、私WA別のポストを見つけ

content 
more content 
more content 

(もところで、コンテンツの3つの以上の行があるかもしれません)

を捕獲しようとしています私はそれが欲しいものを達成するためにその表現を操作することはできません。その投稿はここにあります:Regex match from start label until empty line or end label

見出し以外のすべてのものにマッチする式を作ってみたのですが、例えば?(\ *(。*)\ *)のようなものは、いずれかが欲しい。値下げだけでアスタリスクを探しているよりも複雑であるためにあなたが仕様を見ることができるように

+1

ファイルが大きすぎていない場合は、そのファイル全体をメモリに読み込み、 ''(?​​m)^ \ * {3、}見出し\ * {3、}''正規表現を使って分割します。 –

答えて

0

正規表現はhttp://spec.commonmark.org/0.26/#atx-headings

あなたが見ることができ値下げに

を解析するために適切なツールではありませんどのようにマークダウンのパーサここ

https://github.com/gjtorikian/commonmarker/blob/master/ext/commonmarker/commonmarker.c

あなたは既製を選ぶことができるのいずれかに実装されますあなたがそれを行うつもりならば、適切なパーサーを書くかもしれません。

0
$s = @' 
***** Heading1 ******** 
content 
more content 
more content 

***** Heading2 ******** 
content 
more content 
more content 

'@ 

[regex]::Matches($s, "^\*+ (?<Heading>.*?) \*+`r`n(?<Content>.*?)`r?`n\s*`r?`n", 'singleline, multiline') | 
    ForEach-Object { 

     $_.Groups['Heading'].Value 
     $_.Groups['Content'].Value 
     "--" 

    }