Entwickler-Ecke

Basistechnologien - [Regex] mehrfach R ausfiltern


outdoorboy - Mi 18.04.12 17:36
Titel: [Regex] mehrfach R ausfiltern
Hallo NG

Für einen Text Highlighter suche ich einen regex der mir den Buchstaben R nach folgender Regel aussucht.

Der Text: "CR X 50 Y 35 R 15 DR- R F M"

folgt auf das R ein Leerzeichen und eine Zahl sollte das R schwarz sein.

Hier die Zeile wie sie aussehen soll.

CR X -50 Y -35 R 15 DR- R F M

In dem nachfolgenden XML-Auszug enthält der <Expression Type="Text"> alle Ausdrücke nach denen gesucht wird.


XML-Daten
1:
2:
3:
4:
<Regex>
    <Expression Type="Text">//|\(|\)|LBL ([0-9]{1,3})?|GEWINDEBOHREN|ZUSTLG|[YZS]| X|IX|IY|IZ|COS|SIN|LBL| R |R0|RR|RL|[SMF][0-9]+|IF|EQU|GOTO|LT|GT|CYCL DEF [0-9]*\.[0-9]|(TOOL )?CALL( PGM)?|TIEFBOHREN|ABST|TIEFE|NULLPUNKT|VERWEILZEIT|V.ZEIT|FN [0-9][0-5]*|[:]|[=]|[Q]([0-9]{1,3})?|[-+]?[\d]{1,},?[\d]*|-?,[\d]*|^[A-Z][+-]</Expression>
    <Expression Type="Number">^(?:[-+]?([1-9][0-9]*|0?))?(?:,[0-9]*)?$</Expression>
</Regex>


Mit ...| R |... wird nach R gesucht. Wie kann ich nun feststellen ob danach eine Zahl kommt ohne diese zum Match hinzuzufügen. Mit ...| R [0-9]|... ist der Match ja R 1 und der Regex für die Zahl funzt nicht mehr.

Geändert am 18.04.2012 19:30

Hat sich erledigt. look around ist die Lösung

...| R (?=[0-9])|...

http://de.wikipedia.org/wiki/Regul%C3%A4re_Ausdr%C3%BCcke#Look-around_assertions

ciao