2017-06-22 9 views
-1

正規表現検索を実行したいのですが、これは自分のデータです。javascript:regexエスケープ文字が表示されない

a = 'Watch4net APG Event: Host/O:\ Label:OraDB Serial Number 1610f067 on Device dlpdb1 is alerted.' 

今、以下のように抽出したいと思います。

rx = /Event: Host\/(.*) on/ 
arr = rx.exec(a)[1] 

結果では、私はOの後、次の

'O: Label:OraDB Serial Number 1610f067' 

バックスラッシュを取得しています:****逃しなっています。どうすれば印刷できますか?事前

+1

いいえ、**欠けているわけではありません** **そこにはありません。入力文字列には '' \ ''という文字はありません。 –

+0

Oの後にバックスラッシュが1つある: – tollboy

+1

*文字列リテラル*に 'O'の後にバックスラッシュ記号がありますが、リテラル' '\' 'を示していません。文字列リテラルでリテラル '' \ ''を表すには '' \\ ''が必要です。 –

答えて

1

ありがとうございます、あなたのデータのすべてのバックスラッシュを見つけて、二重のバックスラッシュでそれらを交換する必要があります。

a = 'Watch4net APG Event: Host/O:\\ Label:OraDB Serial Number 1610f067 on Device dlpdb1 is alerted.' 

Javascriptではエスケープ文字として1つのバックスラッシュを使用しています。 JavaScriptを使用して2倍にすることはできませんので、最初に「見る」ことができないので、データを他の方法で操作する必要があります。

+0

助けてくれてありがとう、私はライノエンジンでこのことをしなければなりません。あなたは何かを提案できますか? – tollboy

+0

これはかなり恐ろしくてハッキーです(このコメントには書式設定オプションはありません)。しかし、arr = rx.exec(a)[1]という行の後には、あなたはarr = arr.replace(/([A-Z]:)/、 '$ 1 \\');と書くことができます。これは大文字とそれに続くコロンを探し、その大文字とそれに続くコロンとバックスラッシュを置き換えます –