Brauche Hilfe mit RegExReplace Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Franc_K
Posts: 3
Joined: 08 Dec 2020, 11:30

Brauche Hilfe mit RegExReplace

Post by Franc_K » 08 Dec 2020, 11:55

Hallo alle,

ich kapier einfach RegExReplace nicht.

Ich habe ein Word-Dokument und möchte dort zum Beispiel Text und Tabellen kopieren und dann mittels AHK aufbereiten.
Dafür müssen alle Tags außer table, br, td, tr, b, u raus. Bei den Tags die drin bleiben sollen müssen alle Attribute bis auf colspan, rowspan, raus.
Wenn es dafür was fertiges gibt, nehme ich das gern. ^^

Wie kann ich folgendes erreichen? Gegeben sei folgender Codeschnipsel.

Code: Select all

<tr style='mso-yfti-irow:6'>
  <td width=492 style='width:368.95pt;border-top:none;border-left:none;
  border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
Ich möchte zum Beispiel alle "style=' bis zum nächsten ' entfernen. Das klappt aber nicht. Alles was ich höchstens schaffe ist dass er Style=' entfernt aber der Rest stehenbleibt. Style kann nur eine Zeile lang sein oder über mehrere gehen.
Wie müsste der RegExReplace Befehl dafür aussehen? Gern mit Erklärung.

Danke

fredchf
Posts: 54
Joined: 30 Sep 2013, 14:55

Re: Brauche Hilfe mit RegExReplace

Post by fredchf » 08 Dec 2020, 15:18

Hallo!
Aller Anfang ist schwer, aber Regex ist eine tolle Sache wenn man verstanden hat wie es geht.
Ich empfehle dir einen Regex Tester zu verwenden, damit du direkt siehst wie dein Ergebnis aussieht. Ich nutze gerne folgende AHK-Version von Toralf.
https://autohotkey.com/board/topic/16400-ahk-regex-tester-v21/

zu deinem Problem:
Ich bin nicht sicher, dass ich die Problemstellung richtig verstanden habe. Falls du Alles vom ersten bis zum letzten 'style=' löschen wills, genügt Folgendes:

Code: Select all

str =
(
<tr style='mso-yfti-irow:6'>
<td width=492 style='width:368.95pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
)

MsgBox, % RegExReplace(str, "(style=).*(style=)")		; Alles inkl. letztem 'style=' entfernen
MsgBox, % RegExReplace(str, "(style=).*(style=)", "$2")	; das letzte 'style=' bleibt stehen

just me
Posts: 9542
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Brauche Hilfe mit RegExReplace  Topic is solved

Post by just me » 09 Dec 2020, 05:11

Willkommen!

Code: Select all

Test =
(Join`r`n
<tr style='mso-yfti-irow:6'>
  <td width=492 style='width:368.95pt;border-top:none;border-left:none;
  border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
)
MsgBox, % RegExReplace(Test, " style='[^']*'")
?

Erläuterung:

Gesucht wird:
  • die Zeichenfolge style=' (mit führendem Leerzeichen),
  • gefolgt von Zeichen der Klasse [^'] (dazu gehören alle Zeichen, die nicht ^ das Zeichen ' sind),
  • es können beliebig viele oder auch kein Zeichen sein *,
  • gefolgt von einem Zeichen '.
Der komplette Treffer wird ersetzt durch:
  • nichts!
Last edited by just me on 09 Dec 2020, 05:30, edited 1 time in total.

Franc_K
Posts: 3
Joined: 08 Dec 2020, 11:30

Re: Brauche Hilfe mit RegExReplace

Post by Franc_K » 09 Dec 2020, 05:24

Danke, perfekt. So funktioniert es.
Der RegExTester ist auf jeden Fall nützlich.

Post Reply

Return to “Ich brauche Hilfe”