Artikel

15.1: Definieren der regulären Äquivalenz


Reguläre Äquivalenz ist die am wenigsten restriktive der drei am häufigsten verwendeten Definitionen von Äquivalenz. Es ist jedoch wahrscheinlich das wichtigste für den Soziologen. Dies liegt daran, dass das Konzept der regulären Äquivalenz und die Methoden zur Identifizierung und Beschreibung von regulären Äquivalenzmengen ziemlich genau dem soziologischen Konzept einer "Rolle" entsprechen. Der Begriff der sozialen Rollen ist ein Kernstück der meisten soziologischen Theorien.

Formal: "Zwei Akteure sind regelmäßig gleichwertig, wenn sie mit gleichwertigen anderen gleichermaßen verwandt sind." (Borgatti, Everett und Freeman, 1996: 128). Das heißt, reguläre Äquivalenzmengen bestehen aus Akteuren, die ähnliche Beziehungen zu Mitgliedern anderer regulärer Äquivalenzmengen haben. Das Konzept bezieht sich nicht auf bestimmte andere Akteure oder auf die Präsenz in ähnlichen Unterdiagrammen; Schauspieler sind regelmäßig gleichwertig, wenn sie ähnliche Verbindungen zu Mitgliedern anderer Sets haben.

Das Konzept ist eigentlich eher intuitiv zu erfassen als formal. Susan ist die Tochter von Inga. Deborah ist die Tochter von Sally. Susan und Deborah bilden einen regulären Äquivalenzsatz, da jeder eine Bindung zu einem Mitglied des anderen Satzes hat. Inga und Sally bilden ein Set, da jeder eine Bindung zu einem Mitglied des anderen Sets hat. In der regulären Äquivalenz ist es uns egal, welche Tochter zu welcher Mutter geht; was durch reguläre Äquivalenz identifiziert wird, ist das Vorhandensein von zwei Mengen (die wir als "Mütter" und "Töchter" bezeichnen könnten), die jeweils durch ihre Beziehung zu der anderen Menge definiert sind. Mütter sind Mütter, weil sie Töchter haben; Töchter sind Töchter, weil sie Mütter haben.


Sprache für reguläre Ausdrücke - Kurzübersicht

Ein regulärer Ausdruck ist ein Muster, das die Engine für reguläre Ausdrücke versucht, im Eingabetext abzugleichen. Ein Muster besteht aus einem oder mehreren Zeichenliteralen, Operatoren oder Konstrukten. Eine kurze Einführung finden Sie unter Reguläre .NET-Ausdrücke.

Jeder Abschnitt in dieser Kurzanleitung listet eine bestimmte Kategorie von Zeichen, Operatoren und Konstrukten auf, die Sie zum Definieren regulärer Ausdrücke verwenden können.

Wir haben diese Informationen auch in zwei Formaten bereitgestellt, die Sie herunterladen und ausdrucken können.


Typgleichheit

Die Bedeutung von Grundoperationen wie der Zuweisung (gekennzeichnet durch = in C) wird in einer Sprachdefinition festgelegt. So ist zum Beispiel die Bedeutung von Aussagen wie

hier wird der Wert von Objekt y in die Speicherplätze für Variable x kopiert.

Bevor jedoch eine Operation wie eine Zuweisung vom Übersetzer akzeptiert werden kann, müssen die Typen der beiden Operanden normalerweise gleich sein (oder vielleicht auf eine andere spezifizierte Weise kompatibel sein).

Daher muss ein Sprachübersetzer in einigen Fällen entscheiden, ob zwei Typen gleich sind. Wir betrachten nun, was es bedeutet, zu sagen, dass zwei Typen "gleich" (oder gleichwertig) sind.

Es gibt zwei Standardmethoden, um festzustellen, ob zwei Typen als gleich angesehen werden: Namensgleichheit und strukturelle Äquivalenz.

Namensäquivalenz ist am einfachsten: zwei Typen sind genau dann gleich, wenn sie denselben Namen haben. So zum Beispiel im Code (mit C-Syntax)

wenn Namensgleichheit in der Sprache verwendet wird, dann wären x und y vom gleichen Typ und r und s vom gleichen Typ, aber der Typ von x oder y wäre nicht äquivalent zum Typ von r oder s . Das bedeutet, dass Aussagen wie

wäre gültig, aber Aussagen wie

wäre ungültig (d. h. würde von einem Übersetzer nicht akzeptiert).

Verwenden von strukturelle Äquivalenz:, zwei Typen sind genau dann gleich, wenn sie die gleiche "Struktur" haben, die unterschiedlich interpretiert werden können.
Eine strenge Interpretation wäre, dass die Namen und Typen jeder Komponente der beiden Typen gleich sein müssen und in der Typdefinition in derselben Reihenfolge aufgeführt werden müssen.
Eine weniger strenge Anforderung wäre, dass die Komponententypen in den beiden Typen gleich und in der gleichen Reihenfolge sein müssen, die Namen der Komponenten jedoch unterschiedlich sein können.

Betrachten Sie noch einmal das obige Beispiel mit strukturelle Äquivalenz die beiden Typen Stack und Set würden als gleichwertig angesehen, was bedeutet, dass ein Übersetzer Aussagen wie . akzeptieren würde

(Beachten Sie, dass C keine strukturelle Äquivalenz unterstützt und bei der obigen Zuweisung einen Fehler ausgibt.)


Wenn Sie rein funktionalen Code mit unveränderlichen Objekten schreiben möchten, sollten Sie es besser versuchen vermeiden mit regulären Klassen. Die Grundidee des funktionalen Paradigmas ist die Trennung von Datenstrukturen und Operationen auf ihnen. Fallklassen sind eine Darstellung einer Datenstruktur mit den notwendigen Methoden. Funktionen an den Daten sollten in verschiedenen Software-Entitäten (z. B. Merkmale, Objekte) beschrieben werden.

Reguläre Klassen hingegen verknüpfen Daten und Operationen, um die Veränderlichkeit bereitzustellen. Dieser Ansatz ist näher am objektorientierten Paradigma.

Verwenden Sie daher nicht Fallklassen wenn:

  1. Ihre Klasse trägt einen veränderlichen Zustand.
  2. Ihre Klasse enthält etwas Logik.
  3. Ihre Klasse ist keine Datendarstellung und Sie benötigen keine strukturelle Gleichheit.

In diesen Fällen sollten Sie jedoch wirklich über den Stil Ihres Codes nachdenken, da dieser wahrscheinlich nicht funktional genug ist.

Fallklassen sind normal Klassen mit syntaktischem Zucker. Es gibt also keinen wirklich großen Unterschied, Sie können mit einer Fallklasse alles machen, was Sie mit einer Klasse tun können und umgekehrt.

Fallklassen sparen Ihnen nur eine Menge Boilerplate-Code zum Schreiben.

Perfekte Passform ist, wie der Name schon sagt, die Verwendung von Fallklassen in Musterabgleich mit Fall.

  1. Wenn Ihre Klasse einen veränderlichen Status aufweist, unterlassen Sie Use-Case-Klassen.
  2. Wenn Sie strukturelle Gleichheit wünschen, nutze eine case-Klasse, da sie den richtigen hashCode und equals liefert. Sie möchten sie beispielsweise als Schlüssel für ein Set oder eine Karte verwenden

Hier ist eine weitere persönlichere Präferenz:

  • Wenn Sie nur die automatischen Getter wünschen und Instanzen in ein Set oder eine Map einfügen, aber immer nur eine Instanz haben und keine strukturelle Gleichheit benötigen, bevorzugen Sie die Klasse Foo(val i: Int) gegenüber der Fallklasse Foo(i: Int). , weil Sie möglicherweise keine teureren Gleichheitsprüfungen haben.

Wenn 1. und 2. kollidieren, können Sie bestimmte Fallklassenmerkmale von Hand implementieren. Stellen Sie beispielsweise eine begleitende Apply-Methode oder einen Mustervergleichsextraktor für eine veränderliche Klasse ohne Groß-/Kleinschreibung bereit.

Fallklassen sind datenzentriert.

Wir erhalten folgende Vorteile durch die Verwendung von Fallklassen gegenüber regulären Klassen.

(1) Wertäquivalenz: Dies bedeutet, dass zwei Fallinstanzen mit Werten in ihnen verglichen werden können.

Andere Vergleichsoperatoren (>, >= < usw.) sind jedoch nicht definiert.

(2) Unveränderliche Felder: Thread-sicher

(3) Automatische Felderstellung: Std und Protokoll sind unveränderliche Felder, die von Scala automatisch erstellt werden.

case-Klassen werden auch beim Parsen von Spark-DataFrame-Zeilen verwendet und der Vorteil besteht darin, dass auf Spalten von DataFrame über den Feldnamen der case-Klasse zugegriffen werden kann.

Eine case-Klasse bietet Ihnen "freie" (d. h. Sie müssen nicht schreiben) Implementierungen von equals , hashcode und toString sowie apply und unapply im Begleitobjekt. Grundsätzlich können Sie sich eine Fallklasse vorstellen als benanntes Tupel, deren Felder ebenfalls benannt sind.

Für alles andere ist es wahrscheinlich besser, eine normale Klasse zu verwenden.

Normale Klassen sind Klassen als Klassen in Java. Es kann sowohl den Status als auch die Funktionalität enthalten.
Fallklassen sind wie Daten-POJO in Java. Klassen, die einen Zustand halten, der von Funktionen verwendet werden kann (normalerweise in anderen Klassen).

Wenn Sie Daten-POJO in Java implementieren, sollten Sie die darin enthaltene Variable setzen, Getter und Setter für sie hinzufügen, Hashcode und Equals implementieren und wahrscheinlich toString implementieren.
Normalerweise ist es nicht so schlimm, da die IDE nach dem Definieren der Variablen alle für Sie generieren kann, aber wenn Sie Variablen ändern/hinzufügen, sollten Sie daran denken, alle Methoden zu aktualisieren.
in case-Klassen definieren Sie die Variablen (oder besser Werte) und der Compiler generiert alle Methoden für Sie. Sie erhalten also beides, keine Boilerplate und aktualisierte Funktionalität.
Für Fallklassen generiert der Compiler auch mehr Funktionalität, die Sie in Java nicht haben und haben können, die Kopierfunktion und Apply/Unapply im Begleitobjekt.


Barrel Öläquivalente und Produktion

BOE taucht auch bei der Kommunikation der täglichen Energieproduktion und des täglichen Verbrauchs auf. Diese wird in Barrel Öläquivalent pro Tag (BOE/D) ausgedrückt. Barrel Öläquivalent pro Tag ist ein Begriff, der häufig im Zusammenhang mit der Förderung oder dem Vertrieb von Erdöl und Erdgas verwendet wird. ​BOE/D ist für die Finanzwelt wichtig, da es dazu dient, den Wert eines Unternehmens zu bestimmen.

Es gibt mehrere verschiedene Kennzahlen, die Aktien- und Anleihenanalysten verwenden, um die Leistung eines Ölunternehmens zu bewerten. Die erste ist die Gesamtproduktion eines Unternehmens, die auf der Basis von Gesamtäquivalenten in Barrel berechnet wird. Dies hilft, den Umfang des Unternehmens zu bestimmen. Unternehmen, die wenig Öl und viel Erdgas produzieren, könnten ungerecht bewertet werden, wenn äquivalente Barrel nicht mitgezählt würden.


Prozentrechner 2

Matheformel von dezimal in prozentuales Ergebnis -
Multiplizieren Sie zuerst die Dezimalzahl mit der Zahl 100. Fügen Sie dann das Zeichen "%" zum Ergebnis hinzu. Lernen Sie aus den folgenden entsprechenden Beispielen.

  • 0,3 Dezimalzahl in Prozent: 0,3 &mal 100 = 30%
  • 0,85 Dezimalzahl in Prozent: 0,85 &mal 100 = 85 %
  • 1 Dezimalzahl in Prozent: 1 &mal 100 = 100 %
  • 6 Dezimalzahl in Prozent: 6 &mal 100 = 600 %
  • 15 Dezimalzahl in Prozent: 15 &mal 100 = 1.500 %
  • 33 Dezimalzahl in Prozent: 33 &mal 100 = 3.300 %
  • 33.333 Dezimalzahl in Prozent: 33,333 &mal 100 = 3,333,3%
  • 77,5 Dezimalzahl in Prozent: 77,5 &mal 100 = 7.750 %
  • 100 Dezimalzahl in Prozent: 100 &mal 100 = 10.000 %
  • 125 Dezimalzahl in Prozent: 125 &mal 100 = 12.500 %

Matheformel von Prozent in dezimales Ergebnis -
Teilen Sie zuerst die Zahl in Prozent durch den Wert 100 und entfernen Sie dann das Zeichen "%" aus dem Ergebnis. Lernen Sie Berechnungsbeispiele von wenigen Prozent bis Dezimalstellen.

  • 0,7 Prozent zur Dezimalzahl: 0,7% &dividiere 100 = 0,007 Dezimal
  • 1 Prozent zur Dezimalzahl: 1% & 100 dividieren = 0,01 Dezimal
  • 5 Prozent zur Dezimalzahl: 5% &dividiere 100 = 0,05 Dezimal
  • 10 Prozent zur Dezimalzahl: 10% &dividiere 100 = 0,1 Dezimal
  • 25 Prozent zur Dezimalzahl: 25% &dividiere 100 = 0,25 Dezimal
  • 50 Prozent zur Dezimalzahl: 50% &dividiere 100 = 0,5 Dezimal
  • 55 Prozent zur Dezimalzahl: 55% &dividiere 100 = 0,55 Dezimal
  • 75 Prozent zur Dezimalzahl: 75% &dividiere 100 = 0,75 Dezimal
  • 90 Prozent zur Dezimalzahl: 90% &dividiere 100 = 0,9 Dezimal
  • 95,3 Prozent zur Dezimalzahl: 95,3 % & 100 teilen = 0,953 Dezimal
  • 99 Prozent zur Dezimalzahl: 99% &dividiere 100 = 0,99 Dezimal
  • 100 Prozent in Dezimalzahl: 100% &dividiere 100 = 1 Dezimal
  • 120 Prozent zur Dezimalzahl: 120% &dividiere 100 = 1,2 Dezimal

2 Antworten 2

Für einen allgemeinen topologischen Raum sind diese Definitionen nicht äquivalent.

Das folgende Gegenbeispiel ist im Wesentlichen Beispiel 7.1.6 in Bogatschews Messtheorie. Sei $X$ eine Vitali-Menge des äußeren Maßes $1$ in $[0,1]$, so dass $X$ nicht Lebesgue-messbar ist (und insbesondere kein Lebesgue-Maß Null hat), sondern jede Lebesgue-messbare Teilmenge von $ X$ hat das Lebesgue-Maß Null. JDH erklärt in dieser Frage, wie man ein solches Vitali-Set baut. Statte $X$ mit seiner Unterraumtopologie aus. (Tatsächlich ist $X$ ein separierbarer metrischer Raum, obwohl er nicht vollständig metrisierbar ist.) Dann haben die Borel-Mengen in $X$ die Form $A cap X$, wobei $A$ Borel in $[0 . ist ,1]$. Definiere für ein solches $A cap X$ ein Maß $mu$ durch $mu(A cap X) = m(A)$, wobei $A$ Borel in $[0,1]$ und $m . ist $ ist das Lebesgue-Maß. Es ist einfach zu überprüfen, dass $mu$ ein abzählbar additives Borel-Maß auf $X$ mit $mu(X) = 1$ ist. Außerdem ist $mu$ regulär im Sinne Ihrer zweiten Definition: für eine Borel-Menge $A cap X$ wie oben, da $A$ Borel in $[0,1]$ und $m$ regulär ist, für jedes $epsilon$ gibt es Mengen $C,U subset [0,1]$, die in $[0,1]$ jeweils geschlossen und offen sind, $C subset A subset U$ und $m( U setminus C) < epsilon$. Aber dann haben wir, dass $C cap X, C cap U$ jeweils geschlossen und offen in $X$ sind, $C cap X subset A cap X subset U cap X$ und $mu( (U cap X) setminus (C cap X)) = mu((U setminus C) cap X) = m(U setminus C) < epsilon.$

Andererseits ist $mu$ nicht regulär im Sinne Ihrer ersten Definition. Wenn $K subset X$ kompakt ist, dann ist es auch in $[0,1]$ kompakt und insbesondere Lebesgue-messbar, muss also $m(K) = 0$ haben. Dann ist auch $mu(K) = 0$. Insbesondere können wir $X$ (oder irgendeine andere Menge positiver $mu$-Maßnahmen) nicht von unten durch kompakte Mengen approximieren.

Wenn Ihr topologischer Raum polnisch ist, dann sind diese beiden Definitionen äquivalent, und tatsächlich erfüllt jedes endliche Borel-Maß auf einem solchen Raum beide. Dies ist Satz 7.1.7 von Bogatschew.


2 Antworten 2

Hier ist die Antwort. Die Hauptansprüche (Ansprüche 1-4) Ich bin mir ziemlich sicher, dass ich richtig lag, aber ich hätte in der späteren Aufzählung leicht einen Fall übersehen (oder einen zusätzlichen Fall zählen können). Wenn jemand einen Fehler findet, bitte kommentieren. Lassen Sie mich anmerken, dass ich die Ansprüche 1-4 viel interessanter finde als die darauf folgende Aufzählung.

Der Simplex-Schwerpunkt $e=(1,1,1,1,1,1,1)$ ist in allen unseren Hyperebenen enthalten, aber ich zähle ihn in der folgenden Diskussion im Allgemeinen nicht als Schwerpunkt (also bedeutet Schwerpunkt Schwerpunkt einer $k$-dimensionalen Fläche mit $k < 7$).

Wir unterteilen die Frage in Fälle.

Anspruch 1: Wenn zwei benachbarte Scheitelpunkte leer sind, liegt ein unerwarteter Schwerpunkt vor.

Beweis: Die beiden benachbarten Eckpunkte bilden eine Kante. Wir können den Würfel genauso gut so drehen, dass die leere Kante die $ab$-Kante ist. Dann haben wir $a cap b = emptyset$. Das bedeutet, dass $a cup b$ ein unerwarteter Schwerpunkt ist (hier müssen wir die Tatsache $a eq ar$). Beispiel: wenn $a =$<$1,2$>, $b = $<$3,4,5$>, dann ist $a cup b =$ <$1,2,3,4,5$> in der lineare Spanne von $a$ und $b$.

Anspruch 2: Wenn zwei gegenüberliegende Eckpunkte des Würfels leer sind, liegt ein unerwarteter Schwerpunkt vor.

Anspruch 3: Wenn die Eckpunkte des Würfels mit ungerader oder gerader Parität leer sind, liegt ein unerwarteter Schwerpunkt vor.

Anspruch 4: Wenn keine der Situationen in Anspruch 1, 2, 3 zutrifft, gibt es keinen unerwarteten Schwerpunkt.

Jetzt müssen wir also die Anzahl der Möglichkeiten aufzählen, 8 Elemente auf die Ecken eines Einheitswürfels zu legen, so dass sich mindestens ein Element auf jedem der nicht leeren Ecken befindet. Da Abschnitte unter Permutationen der Koordinaten äquivalent sind, sollten wir diese als 8 identische Elemente betrachten (also zählt nur, wie viele Elemente sich auf einem Scheitelpunkt befinden). Es gibt vier Fälle.

Fall A: keine leeren Knoten. Es gibt nur eine Möglichkeit, dies zu tun: Ein Element auf jeden Scheitelpunkt setzen.

Fall B: ein leerer Knoten. Es gibt 3 Möglichkeiten, dies zu tun. Auf genau einem Scheitelpunkt befinden sich zwei Elemente, und es kann entweder der Hamming-Abstand eins, zwei oder drei vom leeren Scheitelpunkt sein.

Fall C: zwei leere Knoten. In diesem Fall müssen diese beiden Eckpunkte den Hamming-Abstand 2 haben. Die beiden zusätzlichen Elemente können sich entweder auf demselben Eckpunkt (3-fach) oder auf zwei verschiedenen Eckpunkten (7-fach) befinden.

Fall D: drei leere Knoten. In diesem Fall muss jedes Paar dieser drei Scheitelpunkte den Hamming-Abstand 2 haben, daher gibt es nur eine Möglichkeit, sie anzuordnen. Die drei zusätzlichen Elemente können sich entweder alle auf demselben Scheitelpunkt befinden (3-Wege), zwei auf einen Scheitelpunkt und einen auf den anderen (7-Wege) oder auf drei verschiedene Scheitelpunkte (4-Wege) aufgeteilt sein.

Dies ergibt 28 im Wesentlichen unterschiedliche Abschnitte ohne unerwartete Schwerpunkte.

Wir müssen nun die Fälle mit unerwarteten Schwerpunkten zählen, die den Ansprüchen 1-3 entsprechen. Wir werden die Situation in den Ansprüchen 1,2,3 separat behandeln.

Fall von Anspruch 3 Beginnen wir mit der Situation in Anspruch 3. Zuerst können wir annehmen, dass es außer den beiden gegenüberliegenden keine leeren Ecken des Würfels gibt (wenn dies passiert, befinden wir uns in der Situation von Anspruch 1 und kümmern uns dort darum). .

Wir können nun einen anderen Schwerpunkt $d$ in der linearen Spanne von $a,b,c,e$ wählen, so dass $a cup b cup c cup d$ jede Koordinate genau zweimal abdeckt. Nach dem Kriterium, dass es sechs nichtleere Knoten gibt, kann keiner der sechs Schnittpunkte $a cap b$, $a cap c$ usw. leer sein. Wir müssen die acht Elemente in diese sechs Schnittpunkte einfügen. Dies entspricht dem Anordnen von 8 Elementen an den Kanten eines Tetraeders, sodass jede Kante mindestens einem Element entspricht. Es gibt 3 Möglichkeiten, dies zu tun (zwei zusätzliche an einer Kante, eine zusätzliche an jeder von zwei gegenüberliegenden Kanten und eine zusätzliche an jeder von zwei benachbarten Kanten). Anspruch 3 gibt somit 3 weitere nicht-äquivalente Abschnitte. Beachten Sie, dass wir, wenn wir Anspruch 3 analysiert hätten, indem wir nur die Symmetrien des Würfels betrachtet hätten (wie wir es für die Fälle ohne unerwartete Schwerpunkte getan haben), vier nicht äquivalente Abschnitte erhalten hätten.

Fall von Anspruch 2 Was ich hier behaupten möchte ist, dass dies wirklich die Situation in Anspruch 1 ist. Der beste Weg, dies zu tun, ist vielleicht ein Beispiel. Wenn wir $a=$<$1,2,7,8$>, $b=$<$3,4,7,8$>, $c=$<$5,6,7,8$> haben, dann Schwerpunkt <$7,8$>befindet sich in unserer Hyperebene, und die Hyperebene wird somit erzeugt durch $a'=$<$1,2$>, $b'=$<$3,4$>, $c'=$<$5 ,6$>, die durch Anspruch 1 abgedeckt ist.

Fall von Anspruch 1 Hier gibt es drei Möglichkeiten. Im ersten gibt es vier Zentroide $a$, $b$, $c$, $d$ mit paarweise leeren Schnittpunkten, so dass $a cup b cup c cup d =$<$1,2, ldots,8$>. Die Anzahl der Möglichkeiten, dies zu tun, ist die Anzahl der Partitionen von 8 in vier nicht leere Teile, also 5: <$(5,1,1,1), (4,2,1,1), (3, 3,1,1),(3,2,2,1),(2,2,2,2)$>.

Bei der zweiten Möglichkeit haben wir drei paarweise disjunkte Schwerpunkte $a$, $b$, $c$ mit $a cup b cup c = e$ und noch einen weiteren Schwerpunkt $d$, so dass beide $dcap x$ und $ar cap x$ sind für $x=a,b,c$ nicht leer. Die Kardinalitäten von $a,b,c$ könnten <$4,2,2$> oder <$3,3,2$> sein. In beiden Fällen erhalten wir zwei nicht äquivalente Abschnitte, was insgesamt 4 nicht äquivalente Abschnitte ergibt.

Für die dritte Möglichkeit haben wir drei paarweise disjunkte Schwerpunkte $a$, $b$, $c$ mit $a cup b cup c = e$ und wir haben zwei weitere paarweise disjunkte Schwerpunkte $f$ und $g $ so dass $f cup g = a cup b$. In diesem Fall kann die Kardinalität von $c$ von 1 bis 4 reichen. Ich werde nur repräsentative Vektoren für diese Möglichkeiten auflisten. Die berücksichtigten Koordinaten sind diejenigen, die nicht in $c$ enthalten sind.


IsMatch(String, Int32)

Gibt an, ob der im Regex-Konstruktor angegebene reguläre Ausdruck eine Übereinstimmung in der angegebenen Eingabezeichenfolge findet, beginnend an der angegebenen Startposition in der Zeichenfolge.

Parameter

Die Zeichenfolge, nach der nach einer Übereinstimmung gesucht werden soll.

Die Zeichenposition, an der die Suche gestartet werden soll.

Kehrt zurück

true, wenn der reguläre Ausdruck eine Übereinstimmung findet, andernfalls false .

Ausnahmen

startat ist kleiner als null oder größer als die Länge von input .

Es ist eine Zeitüberschreitung aufgetreten. Weitere Informationen zu Zeitüberschreitungen finden Sie im Abschnitt Hinweise.

Beispiele

Das folgende Beispiel veranschaulicht die Verwendung der IsMatch(String, Int32)-Methode, um zu bestimmen, ob eine Zeichenfolge eine gültige Teilenummer ist. Es sucht nach einer Teilenummer, die einem Doppelpunkt (:) in einer Zeichenfolge folgt. Die Methode IndexOf(Char) wird verwendet, um die Position des Doppelpunktzeichens zu bestimmen, das dann an die Methode IsMatch(String, Int32) übergeben wird. Der reguläre Ausdruck geht davon aus, dass die Teilenummer ein bestimmtes Format hat, das aus drei durch Bindestriche getrennten Zeichensätzen besteht. Der erste Satz, der vier Zeichen enthält, muss aus einem alphanumerischen Zeichen gefolgt von zwei numerischen Zeichen gefolgt von einem alphanumerischen Zeichen bestehen. Der zweite Satz, der aus drei Zeichen besteht, muss numerisch sein. Der dritte Satz, der aus vier Zeichen besteht, muss aus drei numerischen Zeichen gefolgt von einem alphanumerischen Zeichen bestehen.

Das Muster für reguläre Ausdrücke lautet:

Die folgende Tabelle zeigt, wie das Muster des regulären Ausdrucks interpretiert wird.

Muster Beschreibung
[a-zA-Z0-9] Entspricht einem einzelnen alphabetischen Zeichen ( a bis z oder A bis Z ) oder einem numerischen Zeichen.
d Entspricht zwei numerischen Zeichen.
[a-zA-Z0-9] Entspricht einem einzelnen alphabetischen Zeichen ( a bis z oder A bis Z ) oder einem numerischen Zeichen.
- Passen Sie einen Bindestrich an.
d Entspricht genau drei numerischen Zeichen.
(-d<3>) Suchen Sie nach einem Bindestrich, gefolgt von drei numerischen Zeichen, und vergleichen Sie zwei Vorkommen dieses Musters.
[a-zA-Z0-9] Entspricht einem einzelnen alphabetischen Zeichen ( a bis z oder A bis Z ) oder einem numerischen Zeichen.
$ Beende das Spiel am Ende der Zeile.

Bemerkungen

Die IsMatch-Methode wird normalerweise verwendet, um eine Zeichenfolge zu validieren oder sicherzustellen, dass eine Zeichenfolge einem bestimmten Muster entspricht, ohne diese Zeichenfolge zur späteren Bearbeitung abzurufen. Wenn Sie feststellen möchten, ob eine oder mehrere Zeichenfolgen mit einem Muster eines regulären Ausdrucks übereinstimmen, und sie dann zur späteren Bearbeitung abrufen möchten, rufen Sie die Methode Match oder Matches auf.

Die Ausnahme RegexMatchTimeoutException wird ausgelöst, wenn die Ausführungszeit des übereinstimmenden Vorgangs das vom Regex.Regex(String, RegexOptions, TimeSpan)-Konstruktor angegebene Timeoutintervall überschreitet. Wenn Sie beim Aufrufen des Konstruktors kein Timeoutintervall festlegen, wird die Ausnahme ausgelöst, wenn der Vorgang einen beliebigen Timeoutwert überschreitet, der für die Anwendungsdomäne festgelegt wurde, in der das Regex-Objekt erstellt wird. Wenn im Regex-Konstruktoraufruf oder in den Eigenschaften der Anwendungsdomäne kein Timeout definiert ist oder wenn der Timeoutwert Regex.InfiniteMatchTimeout ist, wird keine Ausnahme ausgelöst.

Siehe auch

Gilt für


So verwenden Sie das Werkzeug für äquivalente Brüche

Um eine lange Liste äquivalenter Brüche zu finden, geben Sie einfach die Nenner und Zähler deiner Fraktion in der Fraktion Box. Klicken Sie dann auf die Schaltfläche Äquivalente Brüche auflisten und das Tool beginnt mit der Berechnung.

Sobald dies abgeschlossen ist, listet das Tool den Bruch selbst auf, seine reduziert oder einfachste bilden, dann eine Anzahl äquivalenter Brüche in der Äquivalente Brüche Box.