2016-04-13 8 views
1

Ich habe eine Zeichenfolge wie dieseWie nach einem Wort in einem Satz suchen, die auch ein Teil eines großen Wortes in der gleichen Zeichenfolge ist?

String test = "[Short: 1234, Long: 3456, At_Long: 1234, Get_Long: 56788]" 

ich sicherstellen müssen, dass meine Zeichenfolge das WortLange hat. Manchmal wird die Reihenfolge der Inhalte in der Zeichenfolge geändert. Zum Beispiel

String test = "[Long: 1234, Short: 3456, At_Long: 1234, Get_Long: 56788]" 

Also, wenn ich nach

test.contains(" Long:") 

ich nichts, weil die Reihenfolge gelegentlich ändert. Wenn ich das führende Leerzeichen entferne, betrachtet es auch At_Long, Get_long. Wie stelle ich das System nur nach dem Wort Long:?

+0

Was ist die Programmiersprache? –

+0

Die Sprache ist Java – SRS

+1

Versuchen Sie 'test.matches (" (? S). * \\ bLong \\ b. * ")' Oder '(" "+ test) .enthält (" Long: ")' –

Antwort

2

Sie String#matches mit (?s).*\\bLong:.* regex verwenden:

String test = "[Long: 1234, Short: 3456, At_Long: 1234, Get_Long: 56788]"; 
System.out.println(test.matches("(?s).*\\bLong:.*")); 

die regex demo Siehe

Erklärung:

  • (?s) - ermöglicht DOTALL-Modus (die . beginnt newlines passend, auch)
  • .* - Für jeden 0+ Zeichen
  • \\bLong: - passt ein ganzes Wort Long: (\b ist ein word boundary)
  • .* - Für jeden 0+ Zeichen (notwendig, da matches eine vollständige Zeichenfolge Spiel erfordert).

Hinweis: Wenn Sie nicht über die : nach Long kümmern, können Sie .matches("(?s).*\\bLong\\b.*") so verwenden, dass die Long als ganzes Wort abgestimmt werden kann.

+0

Und hier ist eine [Regex-Demo] (https://regex101.com/r/tI8bZ1/1). Es gibt eine "technische" Erklärung auf der rechten Seite. –

Verwandte Themen