Mittwoch, 18. Juli 2007

Regex


iX

Perls reguläre Ausdrücke

Zeichen und Klassen

.ein beliebiges Zeichen außer Newline; paßt im Singleline-Mode auf das n-Zeichen
xein x
Wort"Wort"
[xyz]Zeichenklasse: trifft x, y oder z
[a-z]Zeichenklasse: paßt auf jedes Zeichen zwischen a und z
(Wort)eingefangenes "Wort", wird in $i gespeichert; mit i im Ausdruck verwendbar
(?:Wort)gruppieren, aber nicht speichern
x(?=y)x wenn y folgt; Klammern speichern nicht
x(?!y)x wenn kein y folgt. Klammern speichern nicht
wWortzeichen
w+ganzes Wort (Wortzeichen mit folgendem Leer- oder Satzzeichen)
WNicht-Wortzeichen: Satzzeichen, Leerzeichen und so weiter
sLeerraum: Leerzeichen, Tabulator, Newline
Salles, was kein Leerraum ist: Buchstaben, Ziffern et cetera
bWortgrenze, wie in vi < und >
dZiffer

Quantifizierer

*vorangehender Ausdruck beliebig oft, auch gar nicht
+vorangehender Ausdruck beliebig oft, mindestens einmal
?vorangehender Ausdruck höchstens einmal
{4}vorangehender Ausdruck genau 4mal
{2,7}vorangehender Ausdruck 2- bis 7mal

Sonderzeichen

|oder, auf Zeichen und Gruppen anwendbar: (ganz)|(gar nicht)
^Anfang der Zeile oder des Ausdrucks
$Ende der Zeile oder des Ausdrucks
[^x]alles, was nicht "x" ist
Backslash, nimmt Sonderzeichen die Spezialbedeutung
Ualle Zeichen bis E in Großbuchstaben
Lalle Zeichen bis E in Kleinbuchstaben
Qalle Sonderzeichen bis E mit schützen
EEnde von U, L, Q

Operatoren und Modifizierer

m//suche
s///suche und ersetze
s###suche und ersetze, aber verwende # als Trenner
//gjedes Vorkommen finden
//iGroß- und Kleinschreibung ignorieren
//mMultiline-Mode, ^ und $ passen auf logische Zeilenanfänge und -enden, . matched kein Newline
//sSingleline-Mode, ^ und $ erkennen Anfang/Ende des gesamten Strings, . matched Newline
//smkombiniert: Logische Zeilen plus Newline
//xKommentare und Leerzeichen im Suchen-Teil erlaubt
s///ekann im Ersetzungsteil einen Ausdruck erst evaluieren und dann ersetzen.; erlaubt ist alles, was einen ersetzungsfähigen Ausdruck ergibt

Spezialvariablen

$1Wert der ersten einfangenden Klammer; nur im Ersetzungsteil verwenden
1Rückbezug auf die erste einfangende Klammer
$&letzter gefundener Treffer
$'Text nach dem Treffer
$`Text vor dem Treffer
$+Treffer der letzten einfangenden Klammer
$/Zeilentrenner (Input Record Separator)


Total Commander


Reguläre Ausdrücke

Reguläre Ausdrücke sind ein sehr mächtiges Suchwerkzeug. Sie erlauben die Suche nach komplexen Klassen von Wörtern. Reguläre Ausdrücke sind vor allem für Profis gedacht, können aber auch im Büroalltag zum Finden bestimmter Dokumente nützlich sein (siehe Beispiele unten).

Total Commander unterstützt reguläre Ausdrücke in folgenden Funktionen:
- Befehle - Suchen (im Dateinamen und im Dateiinhalt!)
- Im Lister
- Im Mehrfach-Umbenenntool

- Im Markieren-Dialog

Reguläre Ausdrücke bestehen aus normalen Zeichen und speziellen Zeichen, sogenannten Metazeichen. Folgende Zeichen sind Metazeichen oder der Anfang von Metazeichen:
. ( ) [ ] { } ^ $ + * ? (nur in Zeichenklassen: - )

Normale Zeichen:


test findet den Text "test" im durchsuchten Text. Hinweis: Das findet "test" irgendwo im Dateinamen bzw. Text.

Escape-Sequenzen:

Ein Backslash leitet eine Escape-Sequenz ein. Beispiele für Escape-Sequenzen:

t Tabulatorzeichen
xnn Zeichen mit dem Hexadezimalcode nn. Beispiel: x20 ist ein Leerzeichen. Die Zeichentabelle charmap.exe (sofern installiert) zeigt den Zeichencode der meisten Spezialzeichen an. Mit dem Taschenrechner von Windows können Sie den Dezimalcode in Hexadezimal umrechnen.
[ Eckige Klammer auf: Weil die eckige Klammer ein Metazeichen ist, muss man [ schreiben, wenn man die Klammer selbst finden will.

\ Findet einen Backslash.
. Findet einen Punkt ("." allein findet irgend ein Zeichen, siehe unten).

Zeichenklassen:


Zeichen in eckigen Klammern bilden eine Zeichenklasse. Es wird genau ein Zeichen aus dieser Klasse gefunden. Mit einem Bindestrich werden Gruppen definiert, etwa [a-z]. Ein ^ am Anfang findet alle Zeichen ausser den genannten.
Beispiele:

[aeiou] Findet genau einen dieser Vokale.
[^aeiou] Findet alles ausser einem Vokal
M[ae][iy]er Findet Herrn Meier in allen möglichen Schreibweisen: Mayer, Meyer, Maier, Meier. Sehr nützlich, wenn man sich nicht mehr an die genaue Schreibweise erinnern kann!


Metazeichen

Hier eine Liste der wichtigsten Metazeichen:

^ Zeilenanfang
$ Zeilenende
. Ein beliebiges Zeichen
w ein Buchstabe, eine Ziffer oder der Unterstrich
W das Gegenteil von w
d eine Ziffer
D keine Ziffer
s ein Worttrennzeichen (Leerzeichen, Tabulator etc)
S kein Worttrennzeichen
b findet eine Wortgrenze (Kombination aus s und S)
B Gegenteil von b

Iteratoren

Iteratoren stehen für Wiederholungen des Zeichens links des Iterators.
* Zeichen kommt nicht oder mehrmals vor
+ Zeichen kommt mindestens einmal vor

{n} Zeichen kommt genau n-mal vor
{n,} Zeichen kommt mindestens n-mal vor
{n,m} Zeichen kommt mindestens n-mal, max. m-mal vor

All diese Operatoren sind "gierig", d.h. sie nehmen so viele Zeichen, wie sie bekommen können. Ein nachgestelltes Fragezeichen macht den Operator "genügsam", d.h. er nimmt nur so viele Zeichen wie nötig.
Beispiel: "b+" angewandt auf den Zielstring "abbbbc" findet "bbbb", "b+?" findet "b".

Alternativen

Alternativen stehen in runden Klammern, und werden durch einen senkrechten Strich getrennt.

Beispiel: (Hans|Fritz|Peter) findet einen der Namen Hans, Fritz oder Peter.

Teilausdrücke für Suchen und Ersetzen


Textteile in Klammern gelten als Teilausdrücke.
Beispiel: Wenn man in einer MP3-Datei Titel und Interpret vertauschen will, die durch einen Bindestrich und zwei Leerzeichen getrennt sind (Titel - Interpret.mp3), so kann man das so lösen:
Suchen nach: (.*) - (.*).mp3
Ersetzen durch: $2 - $1.mp3
Dabei steht $1 für den Text in der ersten Klammer, $2 für den in der 2. Klammer.

Rückwärtsreferenzen


n Findet Teilausdruck n ein weiteres Mal im Suchresultat.

Beispiel: (.+)1+ Findet z.B. abab (wobei das erste ab von .+ gefunden wird, das zweite von 1+

Modifikatoren

Schalten die Funktionsweise von regulären Ausdrücken um.


(?i) Ignoriere Gross-/Kleinschreibung. Ist in Total Commander standardmässig aktiv für Dateinamen.
(?-i) Beachte Gross-/Kleinschreibung.
(?g) Schalte in den "gierig"-Modus (standardmässig aktiv)
(?-g) Schalte in den "genügsam"-Modus, so dass "+" dasselbe bewirkt wie "+?"


Die anderen Modifikationen sind bei Total Commander nicht relevant, weil das Programm nur innerhalb einer Zeile suchen kann.


Total Commander verwendet die freie Delphi-Bibliothek TRegExpr von Andrey V. Sorokin: http://regexpstudio.com/
Einige der oben aufgeführten Erklärungen stammen aus der Hilfe zu dieser Bibliothek.
Stab2D gemerkt

Hinweise zu Stab2d

Hinweise zur Verwendung von Stab2d

Sowohl die Statik A-Hausübung als auch die erste und zweite Aufgabe der Statik B-Hausübung lassen sich mit dem Programm Stab2d kontrollieren. Sie können sich das Programm kostenlos aus dem Internet herunterladen:

http://www.isd.uni-hannover.de/62.html

Schräge Lager:

Die Lagerungsbedingungen geben Sie Im Menü Eingabe System Knoten ein. Nachdem Sie die Koordinaten des betreffenden Knotens eingegeben haben, müssen Sie die Lagerungsbedingungen eingeben.

X bedeutet hierbei eine Festhaltung in x-Richtung, Z bedeutet eine Festhaltung in z-Richtung und R bedeutet eine Festhaltung der Rotation (z.B. für eine Einspannung). Geben Sie J ein, wenn der Knoten in der entsprechenden Richtung gelagert ist, geben Sie N ein, wenn der Knoten nicht gelagert ist.

Im nächsten Feld („Verdrehung in Grad“) können Sie den Drehwinkel Ihres schrägen Auflagers eingeben.

Eingabe von Gelenken:

Häufig kommt es vor, dass mehrere Stäbe an ein Gelenk anschließen. Oft machen die Anwender dann den Fehler, jedem der angreifenden Stäbe ein Gelenk zuzuweisen, und wundern sich dann, dass Stab2d die Warnung „Steifigkeitsmatrix ist singulär – Möglicherweise liegt ein verschiebliches System vor“ ausgibt.

Grundsätzlich gilt: Greifen n Stäbe an einem Gelenk an, so muss genau (n-1) Stäben ein Stabendgelenk zugewiesen werden. Einem Stab darf kein Gelenk zugewiesen werden.

Würde man allen Stäben ein Stabendgelenk zuweisen, so könnte sich der Knoten frei drehen, das System wäre damit kinematisch – deshalb die Warnung in Stab2d.

Einflusslinien:

Mit Stab2d kann man auch Einflusslinien berechnen. Beispielhaft wird hier das Vorgehen für die Einflusslinie Mm infolge einer vertikalen Wanderlast 1 erklärt.

Der aufzubringende Lastfall ist das Arbeitskomplement zur Einflussgröße Mm, also in diesem Fall ein Knick um 1. Geben Sie in Stab2d zunächst ein Momentengelenk an der Stelle m ein. Wählen Sie nun bei Belastung Gelenklasten. Geben Sie den Knick um 1 als Verformung ein.

Die Einflusslinie ist das Arbeitskomplement zur Wanderlast, in diesem Fall also die w-Linie. Lassen Sie sich also von Stab2d die Biegelinie berechnen. Sie können sich die Zahlenwerte auch in der Ergebnistabelle ansehen. Sollte die interessierende Stelle nicht ausdrücklich angegeben sein, müssen Sie an dieser Stelle einen Knoten definieren. Dann wird der Wert der Einflusslinie an dieser Stelle auch ausgegeben.

Vorspannung / zu kurz oder zu lang eingebaute Stäbe:

Zur Berücksichtigung der Vorspannung geben Sie an dem entsprechenden Stab ein Normalkraftgelenkt ein. Wählen Sie nun im Menü Belastung den Punkt Gelenklasten aus. Geben Sie die gewünschte Vorspannung als Verformungslast ein.

Abbildung von Längsfedern:

In der 3. Aufgabe der Statik A-Übung ist ein System gegeben, das eine Längsfeder enthält. Das Programm Stab2d hat aber keine Funktion zur Berücksichtigung von Längsfedern. Man kann durch einen kleinen "Trick" aber trotzdem Längsfedern berücksichtigen:

Die Federkonstante k einer Längsfeder gibt an, mit welcher Kraft F die Feder belastet werden muss, damit sie sich um die Länge DL zusammendrückt: k = F / DL

Ein beidseitig gelenkig angeschlossener Stab der Länge L und der Dehnsteifigkeit EA erfährt unter der Last F eine Verkürzung von DL = F L / EA. Er hat also die "Ersatzsteifigkeit" F / DL = EA / L.

Man kann also eine Längsfeder durch einen dehnsteifen Stab ersetzen, indem man das Verhältnis EA / L der Federsteifigkeit k anpasst, sich also beispielsweise die Länge des Stabes zu L = 1 Meter vorgibt und EA entsprechend ausrechnet.

Bei der Eingabe der Materialien ist zu beachten, dass die anderen Stäbe des in Aufgabe 3 gegebenen Systems eine Dehnsteifigkeit von EA = unendl. haben. Es empfiehlt sich also die folgende Eingabe:

Stab

E

I

A

1

1

I1 / IC

10000

2

1

I2 / IC

10000

3

1

I3 / IC

10000

Feder

1

1000

Betrag von k


Abbildung von Drehfedern:

Auch Drehfedern können mit Hilfe von Ersatzstäben berücksichtigt werden. Die Drehfedersteifigkeit kD ist definiert als kD = M / Dj. Gibt man sich einen Ersatzstab der Länge L vor und belastet ihn mit einem Moment M=1, so lässt sich die Verdrehung des Lastangriffspunktes durch "Koppeln" der beiden entstehenden M-Linien ermitteln:

j = 1 * 1 * 1 * L / EI

Daraus ergibt sich also eine "Ersatzdrehfedersteifigkeit" von

M / Dj = 1 / (L / EI) = EI / L

Durch Gleichsetzen von kD und EI / L lässt sich jetzt eine Biegesteifigkeit EI für den Ersatzstab bestimmen, wenn man sich die Länge des Stabes zu L = 1 Meter vorgibt.

Der Ersatzstab wird an der Stelle, an der sich die Drehfeder befindet, biegesteif angeschlossen und an seinem anderen Ende einwertig (!) so gelagert, dass die Verdrehung verhindert wird. Eine zweiwertige Lagerung darf nicht angebracht werden, weil der Stab sonst auch Normalkräfte oder Querkräfte aufnehmen könnte und das ursprüngliche System dann nicht mehr korrekt abbilden würde.

Kontrolle der Flexibilitätsmatrix (dik – Werte):

Die dik – Werte (=die Einträge in der Flexibilitätsmatrix) können mit Stab2d kontrolliert werden. Das ist gerade dann sinnvoll, wenn zwar die Einheitsbelastungszustände (M0-Linie, M1-Linie usw.) mit Stab2d übereinstimmen, die endgültige M-Linie aber von den Ergebnissen aus Stab2d abweicht. Es muss dann also ein Fehler beim „Koppeln“ vorliegen.

Geben Sie nun in Stab2d Ihr statisch bestimmtes Hauptsystem ein. Bringen Sie als Belastung die Größe X1=1 auf. Sie können jetzt alle di1 – Werte kontrollieren. Der d21-Wert entspricht beispielsweise dem Arbeitskomplement zur Größe X2 in dem unter der Last X1 belasteten Hauptsystem. Falls Sie für X2 eine Kraft ausgelöst haben, müssen Sie also eine Verschiebung an der Stelle 2 berechnen.

Belasten Sie das statisch bestimmte Hauptsystem nun nacheinander mit den Lasten Xi und der äußeren Last (zur Kontrolle der di0-Werte auf der rechten Seite).

Wenn Sie alles richtig eingegeben haben, erkennen Sie die Symmetrie des Gleichungssystems: dik = dki. Die Verschiebung an der Stelle i infolge einer Belastung 1 an der Stelle k ist gleich der Verschiebung an der Stelle k infolge einer Last 1 an der Stelle i (Satz von Betti).

Kontrolle der Steifigkeitsmatrix:

Sie können mit Stab2d auch die Steifigkeitsmatrix des Drehwinkelverfahrens kontrollieren. Geben Sie dazu das statische System ein und bringen Sie zusätzlich zu den ohnehin schon vorhandenen Lagern alle Festhaltungen des Starrsystems auf. Dazu zählen beispielsweise Knotendrehwinkel (Drehfesthaltung eingeben!) und Lager bzw. Hilfsstäbe gemäß Ihrer m-Zustände.

Bringen Sie jetzt als Belastung nacheinander die folgenden Zwangsverformungen auf:

Um die Einträge in der Knotengleichung zu kontrollieren, weisen Sie dem jeweiligen Knoten eine Verdrehung um 1 zu. Lassen Sie sich nun die Lagerreaktionen an den im Starrsystem zusätzlich aufgebrachten Lagern ausgeben. Der Eintrag in der Knotengleichung im Feld m1 entspricht gerade der Lagerreaktion am Lager m1, wenn der Knotendrehwinkel zu 1 vorgegeben wurde.

Um die Einträge der Netzgleichung zu kontrollieren, weisen Sie dem jeweiligen Lager eine Lagerverschiebung um 1 zu bzw. wenn Sie einen Hilfsstab eingefügt haben weisen Sie ihm ein Normalkraftgelenk und eine Gelenkverschiebung um 1 zu. Die Einträge in der Netzgleichung entsprechen nun wieder den jeweiligen Lagerreaktionen (bzw. bei einem Hilfsstab der Normalkraft in diesem Stab).

Vorsicht:

In Ihrer Handrechnung haben Sie wahrscheinlich die m-Zustände nicht so gewählt, dass die Verschiebung des jeweiligen Lagers 1 ist. Daher müssen Sie die zu dem jeweiligen m-Zustand gehörigen Zeilen und Spalten des Gleichungssystems Ihrer Handrechnung durch den Betrag der Verschiebung aus Ihrem m-Zustand teilen.

Vergleichen Sie nun die Ergebnisse aus Stab2d mit der modifizierten Steifigkeitsmatrix aus Ihrer Handrechnung. Falls ein m-Zustand falsch sein sollte, weichen die Werte der jeweiligen Zeile und Spalte des Gleichungssystems voneinander ab. Sie können so den Fehler eingrenzen.

Ó www.dirk-ostermann.de