2017-09-06 11 views
-1

私はそれがjavascriptで複数のテキスト文/行を正規表現する方法は?

/(.*)<FooBar>/s 

可能であるならば、これは一つだけの単語(と思う)私はスペースで次の言葉に一致するものが必要と一致するもの正規表現から複数の文はRegexできるようにしたいです。

これは私が試したものの、動作していない正規表現です。JavaScriptの構文かそれ以外のものがあるかどうかわかりません。これらの私がやっている私は

EVENTS:OB: Records not updated to status 
EVENTS:OB: Records that were pending OR to be processed for yester day. 
EVENTS:OB: Unprocessed records older than hour. 
RENAS:OB:BOX: Unprocessed records older than hour. 
RENAS:MOSS Pending 
RENAS:TIGNET Pending 
RENAS:OB:SI: Unprocessed records older than hour. 
RENAS:OB:GC: Unprocessed records older than hour. 
RENAS:RENAS:Count of pending message to process. 
RENAS:OB:10+2_Status: Unprocessed records older than hour. 
RENAS:RENAS_10+2:Unprocessed records in RENAS 10+2 
RENAS:RENAS ACH:Count of pending message to process to FV. 
RENAS:CheckNow:Count of pending message to process to FV 
RENAS:OB:GB: Unprocessed records older than hour. 
RENAS:RENAS: UN Processed records by MIXX for RENAS INSTRUCTONS 
RENAS:RENAS: UN Processed records by MIXX for RENAS Break Bulk 
RENAS:RENAS: UN Processed records by MIXX for RENAS 
RENAS:OB:DOM:Unprocessed count of records older than hour. 
RENAS:OB:DOM:Failed records in the database for previous date. 
RENAS:OB:SI:Records that were pending to be processed for the previous day. 

はRegexしたい文章の例ですが、この

function getLines(text) { 
    var lines = []; 
    var re = /^.*(EVENTS\:OB\:\sRECORDS\snot|EVENTS\:OB\:\sRECORDS\sthat|EVENTS\:OB\:\sUnprocessed).(?<!0\.0)$/; 
    while (m = re.exec(text)) { 
    lines.push(m[1]); 
    }; 

    return lines; 
} 

$(function() { 
    $('#printlogs').html(getLines($('textarea').val()).join('<br>')); 
}); 
+2

の可能性のある重複した[どのように私は正規表現で複数行に渡って任意の文字と一致しますか?](https://stackoverflow.com/questions/159118/how-do- i-match-any-character-across-regular-in-a-regular-expression) –

+0

'/(.*) /s'は複数の単語と一致することがあります。あなたの最初の正規表現は、Javascriptでlookbehindが実装されていないときに '(?<!...)'を使用しようとしているので失敗します。見た目はあまり意味がありません。あなたのオルタネートの文字列の1つの後に実際にただ一つの文字にマッチしたときに '0.0'にマッチすることは不可能です。 – Aaron

+0

はまだ動作しません** Uncaught SyntaxError:予期しないトークン^ ** – learningbyexample

答えて

0

あなたがある

^.*(EVENTS\:OB\:\sRECORDS\snot|EVENTS\:OB\:\sRECORDS\sthat|EVENTS\:OB\:\sUnprocessed).(?<!0\.0)$ 

Uncaught SyntaxError: Unexpected token ^

(私は正規表現に新たなんです)サポートされていない見解の代わりに否定的な先読みが必要:

/^.*(?:EVENTS:OB:\s(?:RECORDS\snot|RECORDS\sthat|Unprocessed))(?!.*0\.0$).*$/gim 

regex demoを参照してください。

詳細

  • ^ - 文字列
  • .*の開始 - (?:EVENTS:OB:\s(?:RECORDS\snot|RECORDS\sthat|Unprocessed))
  • できるだけ多くの改行文字以外の任意の0+文字、 - EVENTS:OB:文字列は1つの空白に続き、いずれかの選択肢:
    • RECORDS\snot - RECORDS、空白、not
    • RECORDS\sthat - RECORDS、空白、that
    • UnprocessedからUnprocessedサブ
  • (?!.*0\.0$) - 行の終わりに0.0存在することができない
  • .*$ - 可能な限り行末まで改行文字以外の0以上の文字。

var s = "EVENTS:OB: Records not updated to status\nEVENTS:OB: Records that were pending OR to be processed for yester day. \nEVENTS:OB: Unprocessed records older than hour. \nRENAS:OB:BOX: Unprocessed records older than hour. \nRENAS:MOSS Pending \nRENAS:TIGNET Pending \nRENAS:OB:SI: Unprocessed records older than hour. \nRENAS:OB:GC: Unprocessed records older than hour. \nRENAS:RENAS:Count of pending message to process. \nRENAS:OB:10+2_Status: Unprocessed records older than hour.\nRENAS:RENAS_10+2:Unprocessed records in RENAS 10+2\nRENAS:RENAS ACH:Count of pending message to process to FV.\nRENAS:CheckNow:Count of pending message to process to FV\nRENAS:OB:GB: Unprocessed records older than hour.\nRENAS:RENAS: UN Processed records by MIXX for RENAS INSTRUCTONS \nRENAS:RENAS: UN Processed records by MIXX for RENAS Break Bulk \nRENAS:RENAS: UN Processed records by MIXX for RENAS \nRENAS:OB:DOM:Unprocessed count of records older than hour.\nRENAS:OB:DOM:Failed records in the database for previous date.\nRENAS:OB:SI:Records that were pending to be processed for the previous day."; 
 
var re = /^.*(?:EVENTS:OB:\s(?:RECORDS\snot|RECORDS\sthat|Unprocessed))(?!.*0\.0$).*$/gim; 
 
document.body.innerHTML = "<pre>" + JSON.stringify(s.match(re), 0, 4) + "</pre>";

関連する問題