2017-01-02 7 views
0

現在、私は正規表現を使ってcydiaレポのパッケージファイルを解析しようとしています。このためには、新しい行の単語と ":"の一致する正規表現が必要です。 例:私はこれを持っている時点ではau.com.psychlaw.mailrules
::私は(上記の例から)何をしたいです http://pastebin.com/5nupT3g6
:パッケージ
(?!\n)\S*:(.*|[\n\r])(?:(?!\n)\S*:*)
しかし、私はラインのようなものを持っている場合、これは動作しません63〜76.
javascript/nodeに必要です。私には計画はなく、パーサーがいないか、単純に見つけられません。
私が使用するためにhttps://regex101.com/Linux/Cydia "パッケージ"インデックスパーサー

誰かが私を助けることを願っています。
〜ニルス

EDIT:多分これ?:

(?!\n)\S*:[\s\S]+?(?=(?:\n)\S*:|$)

+0

例の短い抜粋を投稿してください。 「word1:\ n // stuffword1 //もっと無関係なもの\ n​​word2:// stuff \ nword2」のようなものがあります。「\ n」、「ヒットリターン」は書かないでください) – kabanus

答えて

1

これは私の仕事:

(^|\n)[\w-]+:(.*\n)+?(?=([\w-]+:|$)) 

は、複数行マッチングをオンにすることを忘れないでください! regex101では、右の旗にあります。

内訳:

  1. ^|\n我々は、文字列の改行または初めのいずれかで開始します。
  2. [\w-]+:次は、文字または ' - 'の後に ':'を含むことができる単語です。
  3. (.*\n)+?ここではラインアップを邪魔しないが、貪欲ではないので、(4.)は最初の試合で私たちを止めるだろう。
  4. (?=([\w-]+:|$))次の正規表現の開始または文字列の最後を探します。 (3)が非貪欲なので、これはすべてを食べることはありません。
+0

これはいいアイデアですしかし、あなたの方法や私の方法は私の投稿にEDITとして追加した方が良いですか? –

+0

NM、あなたの作品。 「もっとよく」を知らないのはここで良い言葉です、両方とも働きます。たぶん、 '[\ w-]'の代わりに '\ S'を使うと、': 'を食べることができますが、より多くの文字を使用しているかもしれません。 – kabanus