2017-09-25 1 views
-3

Wie kann man ein exaktes Wort, das einen Leerraum enthält, über Regex in Java abgleichen?Regex eines exakten Wortes mit Leerzeichen in Java

Ex., Sagen wir, ich möchte erfassen "- Mail (Raw)" welche Regex brauche ich? Ich versuchte .*[\-][\s]Mail[\s](Raw), aber es ist fehlgeschlagen.

Hier sind einige Beispiel-Eingangs- und erwartete Leistung:

  1. Hallo - Mail (Raw): true
  2. Hallo - Mail (roh): true
  3. Mail Hallo rawed hier: false
  4. Hallo -Mail (roh): false
  5. - Mail (Raw): false
  6. - Mail (roh): false
  7. - Mail (Raw) sagen hallo: false
  8. - Mail (raw) sagen Hallo: false
+1

'(' und ') 'muss maskiert werden:' \ (Raw \) 'oder in einem String-Literal:' "\\ (Raw \\)" ' –

+1

Sie müssen also nur die Literal-Zeichenfolge' - Mail (Raw) 'abgleichen Groß-/Kleinschreibung beachten? – CAustin

+0

Yeah .. Aber ich kämpfte wirklich mit Flucht und Whitespaces. –

Antwort

0

Ich fand die Antwort. Regex Ich war auf der Suche nach ist:

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

Bedeutung:

* beliebige Zeichen

\ durch Leerzeichen s

- gefolgt von Bindestrich

\ durch Leerzeichen s.

[Mm] ail passende Mail oder Mail

\ durch Leerzeichen s

\ (durch offene Klammer gefolgt

[Rr] aw Raw passend oder roh

\), gefolgt von der Nähe Klammer

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"); 
} 

P. S.https://regex101.com/ ist unser Freund

Verwandte Themen