Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Regular Expressions

T-Rex / 0 Antworten / Baumansicht Nickles

Hallo zusammen,

nachdem ich auf dem falschen Board gepostet habe, sollte dieses Posting jetzt richtig hängen.

Noch mal zu meinem Problem: Ich möchte meinen Visual Basic-Code auf einer WebSite darstellen.
Dazu möchte ich die Schlüsselwörter und die Kommentare mit Hilfe von sed in HTML verpacken (ich möchte kein vim konfigurieren).

Hier meine Fragen:
- in der rules-Datei steht jedes Keyword in einer einzelnen Zeile. Wie kann ich mehrere Keywords in einer Zeile eintragen? Das Ganze soll später leicht zu erweitern sein.

- es ergibt sich das Problem, daß der Datentyp einer Variablen, welche am Ende einer Zeile deklariert wurde, nicht verpackt wird. Wie muß ich mein Suchstring ändern?

- mehrere Keywords können aufeinander folgen. Hier möchte ich nicht jedes einzelne Keyword verpacken, sondern alle aufeinanderfolgenden. Dazu habe ich die entsprechende Zeile im Script zweimal hintereinander geschrieben (vorvorletzte und vorletzte Zeile meines Scriptes). Wie kann ich das ändern?

- Kommentare (beginnen mit einem Hochkomma) müssen nicht am Anfang einer Zeile beginnen, es kann auch ein Befehl davor stehen. Den Beginn des Kommentars bekomme ich verpackt, am Ende der Zeile bekomme ich aber kein Tag-Abschluß hin (letzte Zeile des Scriptes).


Hier ist meine Testdatei:
' Die API-Deklarationen
Private Declare Function NetLocalGroupEnum Lib "NETAPI32.DLL" ( _
    ServerName As Byte, _
    ByVal Level As Long, _
    Buffer
As Long, _
    ByVal PrefMaxLen As Long, _
    EntriesRead As Long, _
    TotalEntries As Long, _
    ResumeHandle As Long _
) As Long
'   In der nachfolgenden Zeile wird der Datentyp "Integer" nicht verpackt
Dim A As Integer
'  Ende der Testdatei


Hier mein sed-Script (geschweifte Klammern durch die HTML-Tag-Klammern ersetzen):
s|Alias |{span class=\"keyword\"}Alias{\/span} |g
s|Any\([ ,]\)|{span class=\"keyword\"}Any{\/span}\1|g
s|As |{span class=\"keyword\"}As{\/span} |g
s|Boolean\([ ,]\)|{span class=\"keyword\"}Boolean{\/span}\1|g
s|ByRef |{span class=\"keyword\"}ByRef{\/span} |g
s|ByVal |{span class=\"keyword\"}ByVal{\/span} |g
s|Byte\([ ,]\)|{span class=\"keyword\"}Byte{\/span}\1|g
s|Const |{span class=\"keyword\"}Const{\/span} |g
s|Declare |{span class=\"keyword\"}Declare{\/span} |g
s|Function |{span class=\"keyword\"}Function{\/span} |g
s|Integer\([ ,]\)|{span class=\"keyword\"}Integer{\/span}\1|g
s|Lib |{span class=\"keyword\"}Lib{\/span} |g
s|Long\([ ,]\)|{span class=\"keyword\"}Long{\/span}\1|g
s|Optional |{span class=\"keyword\"}Optional{\/span} |g
s|Set |{span class=\"keyword\"}Set{\/span} |g
s|String\([ ,]\)|{span class=\"keyword\"}String{\/span}\1|g
s|Sub |{span class=\"keyword\"}Sub{\/span} |g
s|Private |{span class=\"keyword\"}Private{\/span} |g
s|{span class=\"keyword\"}\(.*\){\/span} {span class=\"keyword\"}\(.*\){\/span}|{span class=\"keyword\"}\1 \2{\/span}|g
s|{span class=\"keyword\"}\(.*\){\/span} {span class=\"keyword\"}\(.*\){\/span}|{span class=\"keyword\"}\1 \2{\/span}|g
s|'  *\(.*\)|{span class=\"comment\"}'   \1|g



Aufruf erfolgt mit (Ausgabe am Bildschirm):
sed -f ./sedrules ./ctest.txt


Wer kann mir helfen? Der folgende Link hilft mir auch nicht mehr weiter:
http://sitescooper.org/tao_regexps.html


Vielen Dank im Voraus

 GrüßeT-Rex 
bei Antwort benachrichtigen