Die Erkennung von Großbuchstaben-Strings in einem Größeren String
Ist es eine schöne und saubere Weg zu finden Zeichenketten von Großbuchstaben der Größe 2-4 in der Länge innerhalb einer größeren Zeichenfolge in matlab. Zum Beispiel, können sagen, ich habe einen string...
stringy = 'I imagine I could FLY';
Ist es ein schöner Weg, um einfach extrahieren Sie die FLIEGE Teil des Strings? Derzeit bin ich mit der upper() Funktion, um alle Zeichen in der Zeichenfolge in Großbuchstaben, die wie dieser...
for count = 1:length(stringy)
if upper(stringy(count))==stringy(count)
isupper(count)=1;
else
isupper(count)=0;
end
end
Und dann, ich werde einfach durch den binären Vektor und zu identifizieren, wenn
dort gibt es 2-4 1 s in die Zeile.
Diese Methode funktioniert... aber ich Frage mich, ob es eine sauberere Möglichkeit
um dies zu tun... danke!!!
- Dies kann helfen,... <br> stackoverflow.com/questions/4598315/... viel Glück.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie reguläre Ausdrücke verwenden für diese. Der reguläre Ausdruck
[A-Z]{2,4}
suchen für 2-4 Großbuchstaben in einer Zeichenfolge.Wird die entsprechende matlab-Funktion aufgerufen wird
regexp
.regexp(string,pattern)
gibt subindexes instring
von allen Orten, die es entsprichtpattern
.Für Ihre Muster habe ich zwei Vorschläge:
\<[A-Z]{2,4}\>
. Dieser sucht für ganze Wörter das bestehen von 2-4 Großbuchstaben (damit es nicht packenTOUCH
unten):(Bearbeiten: Matlab verwendet
\<
und\>
für Wortgrenzen nicht die standard -\b
).Wenn Sie strings, wo Fall gemischt werden kann, innerhalb eines Wortes ist und Sie wollen diese zu extrahieren, versuchen
(?<![A-Z])[A-Z]{2,4}(?![A-Z])
(was bedeutet "2-4 Großbuchstaben, die nicht inmitten von Großbuchstaben):Holen die regex basiert auf, welches Verhalten Sie wollen auftreten.
\<
und\>
für Wortgrenzen statt\b
werde ich update meine Antwort (Oktave verwendet das standard - '\b'...)