Zum BeispielEine Regex zum Extrahieren von ";" oder "=" Symbolen aus dem Quellcode?
int val = 13;
Serial.begin(9600);
val = DigitalWrite(900,HIGH);
Ich möchte wirklich spezielle Symbole wie =
und ;
extrahieren.
Ich konnte Symbole extrahieren, die im Code nebeneinander erscheinen, aber ich brauche alle Vorkommen.
Ich versuchte [^ "//"A-Za-z\t\n0-9]*
und [\;\=\{\}\,]+
. Keine funktionierte.
Was ist los?
i wie unten eine Regel für meinen Scanner gemacht hatte (hatte geändert)
Semikolon [;]. ([\ N] | [^ "//"])
Zuordnung [=] +
Klammer ([{] | [}]) (.)? ([\ n] | [^ "//"])
roundbarcket ("()")“"
das Problem m wie diese Situationen aufgetreten ist
int val = 13; // es konnte "=" nicht erkennen, weil "val" und "=" angefügt sind. ich möchte sie entweder angrenzen oder nicht erkennen
serial.read(); // es konnte nicht erkennen() und; mit individuell. Wenn ich eine Semikolonregel und eine Rundstabregel hinzufüge,(); wurde erkannt.
wie kann ich sie lösen?
Wenn Sie ein einzelnes Zeichen erkennen möchten, verwenden Sie keine Wiederholungsoperatoren ('*' oder '+'). Nur '[...]' entspricht einem Zeichen. Außerdem müssen Sie keine Backslash-Escape-Zeichen in einer Zeichenklasse außer Backslash verwenden. So ist '[; = {},]' in Ordnung, um einem dieser Zeichen zu entsprechen (und, wie gesagt, '[; = {},] + 'wird mit einer beliebigen Anzahl solcher Zeichen übereinstimmen, so dass es der Zeichenkette' entspricht }; als ein einzelnes Token. – rici
Ich versuchte [; = {}], aber es gab eine Warnung. - Kann nicht richtig finden Ich habe mit Teilung Token kämpfen. zum Beispiel int val = 13; Fall war Erfolg int val = 13; Fall war nicht erfolgreich wie kann ich sie teilen? –
Ich denke, Sie müssen mehr von Ihrer Scannerdefinition zeigen und Ihre Anforderungen klarer beschreiben. – rici