2016-04-14 36 views
2

できるだけ少数の出現などのマッチング:正規表現 - 正規表現

/(?!\s)([^]+?)\s*((?!.+\)\s*\()\([^-].+ \d{2}\/\d{2}\/\d{4} .+\))/g 


入力:

いくつかの注意(一部のユーザー(SU950)16/09/2015 16 :56:38)他のいくつかのノート(別名>ユーザ(AU951)16/09/2015 16:56:38)

例ノート 型:複数の行にバック発信コール(ユーザ名(UN973)18/09/2015午前11時49分10秒)

一部ノート

ノートの2行目(ユーザ名(UN973)18/09/2015 11:52:24)

新しいメモ。 (ユーザー名(UN973)18/09/2015午前11時55分15秒)


予想される出力:

  • いくつかの注意(一部のユーザー(SU950)16/09/2015 16 :56:38)
    • 一部ノート
    • (一部のユーザー(SU950)16/09/2015夜04時56分38秒)
  • 他のいくつかの注意事項(ANOTHER> USER(AU951)16/09/2015 16時56分38秒)
    • 他のいくつかの注意事項
    • (ANOTHER> USER(AU951)16/09/2015夜04時56分: 38)
  • 例ノート型:BACK発信コール(ユーザ名(UN973)18/09/2015午前11時49分10秒)
    • 例ノート型:BACK発信コール
    • (ユーザ名(UN973)18/09/2015 11:49:10)
  • 複数行にいくつかのメモノートの2行目(ユーザ名(UN973)18/09/2015午前11時52分24秒)
    • は複数行にいくつかのメモノート
    • の2行目(ユーザー名(UN973)18/09/2015 11:52:24)
  • 新しいメモ。 (ユーザー名(UN973)18/09/2015 11:55:15)
    • 新しいメモ。
    • (ユーザー名(UN973)18/09/2015午前11時55分15秒)


実際の出力:

  • いくつかの注意(SOME USER (SU950)16/09/2015 16:56:38)他のいくつかのノート(別名>ユーザー(AU951)16/09/2015 16:56:38)
    • いくつかの注意
    • (一部のユーザー(SU950)16/09/2015 16時56分38秒)他のいくつかの注意事項(別のユーザ(AU951)16/09/2015 16時56分38秒)
  • 例ノート型:BACKアウトバウンドコール(ユーザ名(UN973)18/09/2015 11時49分10秒)
    • 例ノート型:アウトバウンドコールバック
    • (ユーザ名(UN973) 20/08/2015 11:49:10)
    • 複数のライン上の注意複数行の2行目の
  • いくつかのメモ(ユーザ名(UN973)18/09/2015 11時52分24秒)
    • いくつかのメモノート
    • の2行目(USER名前(UN973)18/09/2015 11:52:24)
  • 新しいメモ。 (ユーザー名(UN973)18/09/2015 11:55:15)
    • 新しいメモ。
    • (ユーザー名(UN973)18/09/2015午前11時55分15秒)


Regexr: http://regexr.com/3d79o

私はこの問題は、私は信じているということです式の最後の部分についてはできるだけ少数のオカレンスにマッチしませんが、+を使用しても成功しませんでしたか?オペレーター。

+2

私は、入力が何であり、どのような出力が期待されているかを明確に示す投稿を更新することをお勧めします。 – Saleem

+0

は固定のフォーマットですか、または変更されますか? – rock321987

+1

これが修正されている場合は、https://regex101.com/r/cS2oH0/1は – rock321987

答えて

1

(形式は固定されている場合)、それは、regexを以下使用する

var re = /([^(]*)(\(.*?\(?.*?\).*?\))/g; 
var str = 'Some notes(SOME USER (SU950) 16/09/2015 16:56:38)Some other notes(ANOTHER > USER (AU951) 16/09/2015 16:56:38)\n\nExample Notes Type:OUTBOUND CALL BACK (USER NAME (UN973) 18/09/2015 11:49:10)\n\nsome notes on multiple lines\n\nsecond line of notes (USER NAME (UN973) 18/09/2015 11:52:24)\n\nA new note. (USER NAME (UN973) 18/09/2015 11:55:15)'; 
var m; 

while ((m = re.exec(str)) !== null) { 
    if (m.index === re.lastIndex) { 
     re.lastIndex++; 
    } 
    print(m[0]); 
    print(m[1]); 
    print(m[2]); 
} 

Ideone Demo

([^(]*)(\(.*?\(?.*?\).*?\)) 

Regex Demo

Javascriptのコードを実行するための簡単な方法