2017-09-25 1 views
-3

Comment faire correspondre un mot exact contenant un espace blanc via Regex en Java? Ex., Disons que je veux capturer "- Mail (Raw)" dont j'ai besoin regex? J'ai essayé .*[\-][\s]Mail[\s](Raw) mais il échoue.Regex d'un mot exact avec l'espace en Java

Voici quelques échantillons d'entrée et attendue sortie:

  1. Bonjour - Courrier (Raw): true
  2. Bonjour - mail (brut): true
  3. Bonjour courrier RAWED ici: false
  4. Bonjour -mail (brut): false
  5. - Courrier (Raw): false
  6. - Courrier (brut): false
  7. - Courrier (Raw) dire bonjour: false
  8. - Courrier (cru) dire Salut: false
+1

'(' et ') 'besoin d'être échappé:' \ (Raw \) ', ou dans une chaîne littérale:' "\\ (Raw \\)" ' –

+1

Donc vous avez juste besoin de faire correspondre la chaîne littérale' - Mail (Raw) 'mais insensible à la casse? – CAustin

+0

Ouais .. Mais j'ai vraiment eu du mal avec les échappées et les espaces. –

Répondre

0

J'ai trouvé la réponse. Regex que je cherchais est:

.*\s-\s[Mm]ail\s\([Rr]aw\) 

Signification:

* tous les caractères

\ s suivi par l'espace

- suivi par trait d'union

\ s suivi par l'espace.

[Mm] tous les articles correspondants Courrier ou courrier

\ S suivie d'espace

\ (suivie par l'accolade ouverte

[Rr] aw correspondant brut ou cru

\) suivie d'une entretoise à proximité

0
String str = "Hello - Mail (Raw)"; 
Pattern pattern = Pattern.compile("\\w+\\s+-\\s+(?<recepient>[Mm]ail\\s+\\([Rr]aw\\))"); 
Matcher matcher = pattern.matcher(str); 

if (matcher.matches()) { 
    String recepient = matcher.group("recepient"); 
} 

post-scriptumhttps://regex101.com/ est notre ami