2017-06-22 3 views
-1

Je veux faire une recherche regex ceci est mes données.javascript: regex ne pas imprimer caractère d'échappement

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

Maintenant, je veux faire l'extraction comme ci-dessous.

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

En conséquence, je reçois les éléments suivants

'O: Label:OraDB Serial Number 1610f067' 

la barre oblique inverse après l'O: **** est de se manquer. Comment puis-je l'imprimer?

Merci à l'avance

+1

Non, ce n'est pas "manqué", parce que ** ce n'est pas là **. Il n'y a pas de '' \ '' littéral dans votre chaîne d'entrée. –

+0

il y a une barre oblique inversée après O: – tollboy

+1

Il y a une barre oblique inverse après 'O' dans le * littéral * chaîne, mais cela ne dénote pas un' '\' 'littéral. Pour indiquer un '' \ ''littéral dans un littéral de chaîne, vous avez besoin de' '\\' '. –

Répondre

1

Vous devrez trouver tous les antislash dans vos données et de les remplacer par une double barre oblique inverse.

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

Javascript prend une seule barre oblique inverse comme caractère d'échappement. Notez que vous ne serez pas en mesure d'utiliser javascript pour les doubler car il ne peut pas le 'voir' pour commencer, il devra donc manipuler les données d'une autre manière.

+0

Merci pour l'aide t c, je dois à cette chose dans un moteur de rhinocéros. Pouvez-vous suggérer quelque chose? – tollboy

+0

C'est assez horrible et hacky (et je n'ai pas d'options de formatage dans ce commentaire) mais après la ligne arr = rx.exec (a) [1]; vous pourriez mettre arr = arr.replace (/ ([A-Z]:) /, '$ 1 \\'); Cela cherchera une lettre majuscule suivie d'un deux-points et le remplacera par cette lettre majuscule suivie d'un deux-points suivi d'un antislash –