2016-04-16 9 views
0

Ich habe die folgende Regex einen Satzes mit allen Buchstaben in Großbuchstabenregex passenden Worte und Emojis in einem String schreit

private static String ALL_CAPS_REGEXP = "\\b[A-Z\\s]+\\b"; 

zur Anpassung aber nicht mit Zeichenkette wie ;D, :P, :O usw.

einige Beispiele sind:

  • ALL CAPS :DD REGEXP
  • ALL CAPS ('-:
  • ALL CAPS)-': :P
  • I ALL CAPS REGEXP

, die ich übereinstimmen soll. Es ist etwas wie Ignorieren jedes Zeichen, das kein Alphabet ist, aber Ruhe sollte Großbuchstaben sein

Nehmen wir an, dass die in jedem Emoji verwendeten Alphabete nur Großbuchstaben sind.

Welche Änderung in der Regex sollte ich treffen, um Emoji wie Zeichenfolgen, die Großbuchstaben haben, zu entsprechen?

+0

Dieser arbeitete für diese Emojis. –

+0

Sie sagen "ein Wort", aber Regex ist '[A-Z \ s] +', die Buchstaben und Leerzeichen entspricht, also * mehrere * Wörter, nicht einzelne Wörter. Beispiel: "Ich sagte GO HOME" wird "I" und "GO HOME" entsprechen, nicht "I", "GO" und "HOME". – Andreas

+0

@Andreas Sie haben Recht damit. Ich habe diesen Teil der Frage bearbeitet. –

Antwort

1

Für eine Regex "Um Emoji wie Zeichenfolgen, die Großbuchstaben haben", müssen wir erklären, was "Emoji wie Strings" bedeuten.

Da Emojis verschiedene Satzzeichen verwenden (Kombinationen aus) und Sie Emojis mit Großbuchstaben beschränken, können Sie festlegen, dass jede Kombination aus Satzzeichen und optionalen Großbuchstaben ein Emoji ist.

In diesem Fall führen Sie einfach die Interpunktionszeichen in der Zeichenklasse auf.

"\\b[A-Z\\[email protected]#$%^&*()\\_-+={}[\\]:;\"'<>?,./]+\\b" 

Oder vielleicht eher deskriptiv mit POSIX character classes:

"\\b[\\p{Upper}\\p{Space}\\p{Punct}]+\\b" 

Potenziell von (?U) für volle Unicode/internationale Unterstützung vorangestellt.

Sie würden wahrscheinlich auch Single-Charakter, da sie sonst eine Eingabe wie "I rock." kehrt I und ., so verwenden {2,} statt + herausfiltern möchten.

"(?U)\\b[\\p{Upper}\\p{Space}\\p{Punct}]{2,}\\b" 
+0

'POSIX' sieht eine sehr gute Alternative aus. Danke –

+0

Ich habe gerade gemerkt, dass '\\ b [\\ p {Upper} \\ p {Leerzeichen} \\ p {Punkt}] \\ b \ auch mit' http: // url_removed' übereinstimmt !! ?? –

+0

@AnimeshPandey Kann nichts mit Kleinbuchstaben zusammenbringen, also bin ich mir nicht sicher, wovon du sprichst. – Andreas

Verwandte Themen