reguläre Ausdrücke mit Wildcards auf beiden Seiten

reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 10:46:46 von Ina Scherf

Hallo zusammen,

Ich möchte gerne zwei Strings vergleichen, die beide Wildcards beinhalten
können.

In meinem speziellen Fall geht es dabei um Verzeichnisse und es gibt zwei
verschiedene Wildcards, von denen eins auf alles innerhalb eines
Verzeichnisses matcht ([^\/]*) und eins auf alles(.*) (auf Unix-Ebene). Ich
bin mir aber nicht sicher, ob das für die Lösung wichtig ist.

Fakt ist, dass reguläre Ausdrücke ja nur funktionieren, wenn der gesuchte
Begriff sie beinhaltet, auf der zu durchsuchenden Seite funktioniert es
nicht. Und in meinem Fall kommt es sogar am häufigsten vor, dass sowohl die
eine als auch die andere Seite Wildcards beinhaltet.

Gibt es irgendeinen Algoritmus, der sich mit diesem Problem beschäftigt oder
wenigstens einen sinnvollen Ansatz? Habe bisher bei meiner Suche noch
absolut gar nichts gefunden, obwohl ich glaube, dass viele andere schon so
ein Problem gehabt haben müssen.

Beste Grüsse,
Ina

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 11:31:37 von Frank Seitz

Ina Scherf wrote:

> Ich möchte gerne zwei Strings vergleichen, die beide Wildcards beinhalten
> können.

Was soll das Ergebnis dieses Vergleichs sein?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 12:07:54 von Ina Scherf

> Was soll das Ergebnis dieses Vergleichs sein?
Ein einfacher Boolean, ob die beiden Strings zueinander passen.
Einfaches Beispiel: //dep1/[^\/]*/cl5 soll beim Vergleich zu
//[^\/]*/pro4/cl5 wahr ergeben.

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 13:28:06 von Joergen Lang

Ina Scherf schrieb:
>> Was soll das Ergebnis dieses Vergleichs sein?
> Ein einfacher Boolean, ob die beiden Strings zueinander passen.
> Einfaches Beispiel: //dep1/[^\/]*/cl5 soll beim Vergleich zu
> //[^\/]*/pro4/cl5 wahr ergeben.
>

Vielleicht so?

if ( $string_1 ~ m{//dep1/[^\/]*/cl5} &&
$string_2 ~ m{//[^\/]*/pro4/cl5} )
{
machwas_mit( $string_1, $string_2 );
}

Joergen

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 14:05:01 von Frank Seitz

Ina Scherf wrote:
>>Was soll das Ergebnis dieses Vergleichs sein?
>
> Ein einfacher Boolean, ob die beiden Strings zueinander passen.
> Einfaches Beispiel: //dep1/[^\/]*/cl5 soll beim Vergleich zu
> //[^\/]*/pro4/cl5 wahr ergeben.

Du möchtest also abstrakt wissen, ob die beiden Mengen an
Zeichenketten, die die Regexes matchen, eine Schnittmenge besitzen.
Ich schätze das als eine ziemlich schwierige Aufgabe ein.
Wenn Du ein konkrete Menge vorgeben kannst, ist es mit
Durchprobieren lösbar.

Wozu brauchst Du das?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 14:06:23 von Frank Seitz

Ina Scherf wrote:
>>Was soll das Ergebnis dieses Vergleichs sein?
>
> Ein einfacher Boolean, ob die beiden Strings zueinander passen.
> Einfaches Beispiel: //dep1/[^\/]*/cl5 soll beim Vergleich zu
> //[^\/]*/pro4/cl5 wahr ergeben.

Du möchtest also abstrakt wissen, ob die beiden Mengen an
Zeichenketten, die die Regexes matchen, eine Schnittmenge besitzen.
Ich schätze das als eine ziemlich schwierige Aufgabe ein.
Wenn Du eine konkrete Menge vorgeben kannst, ist es mit
Durchprobieren lösbar.

Wozu brauchst Du das?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 14:09:47 von Frank Seitz

Ina Scherf wrote:
>>Was soll das Ergebnis dieses Vergleichs sein?
>
> Ein einfacher Boolean, ob die beiden Strings zueinander passen.
> Einfaches Beispiel: //dep1/[^\/]*/cl5 soll beim Vergleich zu
> //[^\/]*/pro4/cl5 wahr ergeben.

Du möchtest also abstrakt wissen, ob die beiden Mengen an
Zeichenketten, die die Regexes matchen, eine Schnittmenge besitzen.
Ich schätze das als eine ziemlich schwierige Aufgabe ein.
Wenn Du eine konkrete Menge vorgeben kannst, ist es mit
Durchprobieren lösbar.

Wozu brauchst Du das?

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 14:24:04 von Ina Scherf

> Wenn Du eine konkrete Menge vorgeben kannst, ist es mit
> Durchprobieren lösbar.
Das wird in meinem Fall glaube ich schwer lösbar sein, s.u.

> Wozu brauchst Du das?
Ich habe eine Datenbank, in der Berechtigungen von Usern und Gruppen auf
Verzeichnisse stehen. Diese sind zT auch mit Wildcards eingegrenzt. In einer
Anwendung soll jetzt jemand ein Verzeichnis angeben, um herauszufinden, wer
alles Berechtigungen auf dieses hat. Auch auf dieser Seite müssen Wildcards
erlaubt werden. Die tatsächliche Struktur auf dem Server ist mir dabei gar
nicht bekannt, weshalb das Durchprobieren von oben ausscheidet.

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 14:26:12 von Ina Scherf

> Vielleicht so?
>
> if ( $string_1 ~ m{//dep1/[^\/]*/cl5} &&
> $string_2 ~ m{//[^\/]*/pro4/cl5} )
> {
> machwas_mit( $string_1, $string_2 );
> }
Ich bin mir zwar grad nicht sicher, ob Du mit $string_1 und _2 den jeweils
anderen Ausdruck meinst, aber selbst dann wäre in diesem Fall die Bedingung
nicht wahr, in meinem Sinne aber schon.

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 14:30:04 von Joergen Lang

Joergen Lang schrieb:
> Vielleicht so?
> ... ~ ...

Sorry, hier fehlen natürlich die Gleichheitszeichen vor der Tilde:

if ( $string_1 =~ m{//dep1/[^\/]*/cl5} &&
$string_2 =~ m{//[^\/]*/pro4/cl5} )
{
machwas_mit( $string_1, $string_2 );
}

Joergen

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 13.10.2006 15:28:11 von Ingo Menger

Ina Scherf schrieb:

> > Wenn Du eine konkrete Menge vorgeben kannst, ist es mit
> > Durchprobieren lösbar.
> Das wird in meinem Fall glaube ich schwer lösbar sein, s.u.
>
> > Wozu brauchst Du das?
> Ich habe eine Datenbank, in der Berechtigungen von Usern und Gruppen auf
> Verzeichnisse stehen. Diese sind zT auch mit Wildcards eingegrenzt. In ei=
ner
> Anwendung soll jetzt jemand ein Verzeichnis angeben, um herauszufinden, w=
er
> alles Berechtigungen auf dieses hat. Auch auf dieser Seite müssen Wildc=
ards
> erlaubt werden. Die tatsächliche Struktur auf dem Server ist mir dabei =
gar
> nicht bekannt, weshalb das Durchprobieren von oben ausscheidet.

So daß, wenn jemand * eingibt, alle ausgegeben werden müssen, die
irgendeine Berechtigung auf irgendwas haben? Oder muß das Wildcard
schon shell-konform sein?
In letzterem Fall und da Shell-Wildcards recht einfach sind, sollte es
möglich sein, das herauszufinden.
Am einfachsten wäre es freilich, Du hättest die aktuelle Ausgabe von
find / -type d -print vorliegen.
Wenn das nicht geht, schlage ich folgendes vor: Schreib erst einmal
eine Funktion, die für einen einfachen Namen (nicht Pfadnamen)
feststellt, ob es eine gemeinsame Teilmenge gibt. Für die
WIldcardzeichen ? und * sollte das relativ einfach sein. (Für gewissse
Werte von relativ:).
Wenn DU das hast, kannst Du dann auch Pfadnamen Stück für Stück
verarbeiten.

Ich schreib mal Pseudocode, der mir so in den Sinn kommt:

common d:ds e:es
| isChar d && isChar e =3D d == e && common ds es
| is? d && isChar e =3D common ds es
| isChar d && is? e =3D common ds es
....

Idee ist, beide Strings Zeichen für Zeichen durchzugehen und je nach
Zeichenbedeutung (normales zeichen, ? oder *) zu entscheiden, unter
welchen Bedingungen da eine Gemeinsamkeit ist. Axiome sind dann:
* * ja
? c ja
c ? ja
a b wenn a == b
usw. (Großbuchstaben bezeichnen Muster, Kleinbuchstaben einzelne
Zeichen)
Schwierig wird es bei:
*X *Y, da muß man dann jeweils Teilmusterfolgen von X mit Y
vergleichen und Teilmusterfolgen von Y mit X vergleichen. (Es reicht
hier nicht, einfach beide Sterne wegzunehmen, z.B. *a* und *bx hätten
gemeinsam abx sowie alle anderen Strings, die mit abx enden.)

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 15.10.2006 07:51:16 von Frank Seitz

Ina Scherf wrote:

>>Wozu brauchst Du das?
>
> Ich habe eine Datenbank, in der Berechtigungen von Usern und Gruppen auf
> Verzeichnisse stehen. Diese sind zT auch mit Wildcards eingegrenzt. In einer
> Anwendung soll jetzt jemand ein Verzeichnis angeben, um herauszufinden, wer
> alles Berechtigungen auf dieses hat. Auch auf dieser Seite müssen Wildcards
> erlaubt werden. Die tatsächliche Struktur auf dem Server ist mir dabei gar
> nicht bekannt, weshalb das Durchprobieren von oben ausscheidet.

Das scheint mir nicht zuende gedacht. Selbst wenn Du weißt, dass zwei
dieser regulären Ausdrücke etwas gemeinsam matchen, weißt Du immer
noch nicht, welche Verzeichnisse es sind bzw. ob die überhaupt
existieren.

M.E. wird so ein Schuh draus: Der eingegebene Suchausdruck wird
gegen das Server-Dateisystem geprüft. Heraus kommt eine Liste
der getroffenen Verzeichnisse. Gegen diese Liste werden
dann die Berechtigungen geprüft. Heraus kommt, wer welches
Verzeichnis zugreifen darf.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 15.10.2006 09:44:16 von Ingo Menger

Frank Seitz wrote:
> Ina Scherf wrote:
>
> >>Wozu brauchst Du das?
> >
> > Ich habe eine Datenbank, in der Berechtigungen von Usern und Gruppen auf
> > Verzeichnisse stehen. Diese sind zT auch mit Wildcards eingegrenzt. In =
einer
> > Anwendung soll jetzt jemand ein Verzeichnis angeben, um herauszufinden,=
wer
> > alles Berechtigungen auf dieses hat. Auch auf dieser Seite müssen Wil=
dcards
> > erlaubt werden. Die tatsächliche Struktur auf dem Server ist mir dabe=
i gar
> > nicht bekannt, weshalb das Durchprobieren von oben ausscheidet.
>
> Das scheint mir nicht zuende gedacht. Selbst wenn Du weißt, dass zwei
> dieser regulären Ausdrücke etwas gemeinsam matchen, weißt Du immer
> noch nicht, welche Verzeichnisse es sind bzw. ob die überhaupt
> existieren.

Ich habe es so verstanden:
In der Datenbank steht:
Hans, Michel, allow, /usr/*cal
Trude, Meier, allow, /usr/x*cal

In der Application gibt einer ein: Wer soll lt. DB auf /usr/loc*
zugreifen dürfen?
Die Antwort wäre: Hans, Michel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 16.10.2006 06:14:39 von Frank Seitz

Ingo Menger wrote:
> Frank Seitz wrote:
>>Ina Scherf wrote:
>>>
>>>Ich habe eine Datenbank, in der Berechtigungen von Usern und Gruppen auf
>>>Verzeichnisse stehen. Diese sind zT auch mit Wildcards eingegrenzt. In einer
>>>Anwendung soll jetzt jemand ein Verzeichnis angeben, um herauszufinden, wer
>>>alles Berechtigungen auf dieses hat. Auch auf dieser Seite müssen Wildcards
>>>erlaubt werden. Die tatsächliche Struktur auf dem Server ist mir dabei gar
>>>nicht bekannt, weshalb das Durchprobieren von oben ausscheidet.
>>
>>Das scheint mir nicht zuende gedacht. Selbst wenn Du weißt, dass zwei
>>dieser regulären Ausdrücke etwas gemeinsam matchen, weißt Du immer
>>noch nicht, welche Verzeichnisse es sind bzw. ob die überhaupt
>>existieren.
>
> Ich habe es so verstanden:
> In der Datenbank steht:
> Hans, Michel, allow, /usr/*cal
> Trude, Meier, allow, /usr/x*cal
>
> In der Application gibt einer ein: Wer soll lt. DB auf /usr/loc*
> zugreifen dürfen?
> Die Antwort wäre: Hans, Michel

Ist das wirklich die richtige Antwort?

Gegeben folgendes Dateisystem:

/usr/blacal/...
/usr/locus/...

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 16.10.2006 08:43:39 von Ina Scherf

>> Ich habe es so verstanden:
>> In der Datenbank steht:
>> Hans, Michel, allow, /usr/*cal
>> Trude, Meier, allow, /usr/x*cal
>>
>> In der Application gibt einer ein: Wer soll lt. DB auf /usr/loc*
>> zugreifen dürfen?
>> Die Antwort wäre: Hans, Michel
>
> Ist das wirklich die richtige Antwort?
>
> Gegeben folgendes Dateisystem:
>
> /usr/blacal/...
> /usr/locus/...
Das stimmt in diesem Fall zwar auffallend, aber ich meinte meine Anfrage
dennoch so, wie Ingo sie verstanden hat. In meinem Fall hat das Dateisystem
damit erst mal nichts zu tun. Die Antwort wird einzig und allein dem
Anfragenden zur Verfügung gestellt und es wird auch nichts weiter damit auf
dem Dateisystem getrieben, deshalb ist es nicht notwendig, dass die Antwort
wirklich auf das Dateisystem passt.

Nur noch zur Erklärung: Der Benutzer weiss nicht mehr genau, wie der Pfad
war, darf also Wildcards verwenden - er hat aber schon eine grobe Ahnung von
dem, was er sucht. Er kriegt daraufhin vom System im Normalfall mindestens
vier Gruppen und User als Antwort (je nachdem vielleicht auch deutlich mehr)
und kriegt bei jedem auch den dort eingetragenen Pfad angezeigt. Mit dieser
Anzeige soll er jetzt entscheiden, welcher am besten zu dem passt, was er
sucht.

Viel interessanter als meinen speziellen Fall finde ich im übrigen die
Frage, ob es tatsächlich keinen Algorithmus für die Problemstellung der
beidseitigen Wildcards gibt. Unabhängig von der Problemstellung gibt es da
doch sicher öfter mal Situationen, wo so etwas gut zu gebrauchen wäre.

Gruss,
Ina

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 16.10.2006 10:17:59 von Ingo Menger

Frank Seitz wrote:
> Ingo Menger wrote:

> > Ich habe es so verstanden:
> > In der Datenbank steht:
> > Hans, Michel, allow, /usr/*cal
> > Trude, Meier, allow, /usr/x*cal
> >
> > In der Application gibt einer ein: Wer soll lt. DB auf /usr/loc*
> > zugreifen dürfen?
> > Die Antwort wäre: Hans, Michel
>
> Ist das wirklich die richtige Antwort?
>
> Gegeben folgendes Dateisystem:
>
> /usr/blacal/...
> /usr/locus/...

Es ist die Antwort auf die Frage: Ist ein Verzeichnisname denkbar, der
auf beides paßt. Und dies ist eine durchaus sinnvolle Frage, vor allem
in Abwesenheit der Liste der tatsächlich vorhandenen Pfade.

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 16.10.2006 10:20:32 von Ingo Menger

Ina Scherf wrote:

> Viel interessanter als meinen speziellen Fall finde ich im übrigen die
> Frage, ob es tatsächlich keinen Algorithmus für die Problemstellung d=
er
> beidseitigen Wildcards gibt.

Als Platoniker sag ich mal, es gibt ihn. :)

> Unabhängig von der Problemstellung gibt es da
> doch sicher öfter mal Situationen, wo so etwas gut zu gebrauchen wäre.

Ob ihn allerdings jemand schon ausformuliert hat, ist eine Frage, die
ich nicht beantworten kann.

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 16.10.2006 13:53:52 von Frank Seitz

Ina Scherf wrote:

> Viel interessanter als meinen speziellen Fall finde ich im übrigen die
> Frage, ob es tatsächlich keinen Algorithmus für die Problemstellung der
> beidseitigen Wildcards gibt. Unabhängig von der Problemstellung gibt es da
> doch sicher öfter mal Situationen, wo so etwas gut zu gebrauchen wäre.

Hm, ich habe ein bisschen Zweifel, ob das in der Praxis
öfter vorkommt. Schon auf Deinen Anwendungsfall passt es IMO
nicht so richtig, zumindest mich würde dieser Ansatz nicht befriedigen.

Wenn Du Dich auf * als Wildcard-Character beschränkst,
müsstest Du das aber vergleichsweise leicht implementieren können.
Das ist aber nur eine Vermutung, darüber nachgedacht habe ich nicht.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 16.10.2006 13:56:41 von Frank Seitz

Ingo Menger wrote:
> Frank Seitz wrote:
>>Ingo Menger wrote:
>>>
>>>Ich habe es so verstanden:
>>>In der Datenbank steht:
>>>Hans, Michel, allow, /usr/*cal
>>>Trude, Meier, allow, /usr/x*cal
>>>
>>>In der Application gibt einer ein: Wer soll lt. DB auf /usr/loc*
>>>zugreifen dürfen?
>>>Die Antwort wäre: Hans, Michel
>>
>>Ist das wirklich die richtige Antwort?
>>
>>Gegeben folgendes Dateisystem:
>>
>>/usr/blacal/...
>>/usr/locus/...
>
> Es ist die Antwort auf die Frage: Ist ein Verzeichnisname denkbar, der
> auf beides paßt. Und dies ist eine durchaus sinnvolle Frage, vor allem
> in Abwesenheit der Liste der tatsächlich vorhandenen Pfade.

Die Frage ist zweifellos sinnvoll. Ob sie zur geschilderten
Aufgabenstellung passt, ist eine andere Sache.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 16.10.2006 18:03:13 von Ralf Muschall

Frank Seitz schrieb:
> Ina Scherf wrote:

>> Viel interessanter als meinen speziellen Fall finde ich im übrigen die
>> Frage, ob es tatsächlich keinen Algorithmus für die Problemstellung der
>> beidseitigen Wildcards gibt. Unabhängig von der Problemstellung gibt es da
>> doch sicher öfter mal Situationen, wo so etwas gut zu gebrauchen wäre.

> Hm, ich habe ein bisschen Zweifel, ob das in der Praxis
> öfter vorkommt. Schon auf Deinen Anwendungsfall passt es IMO
> nicht so richtig, zumindest mich würde dieser Ansatz nicht befriedigen.

Offenbar gerade so oft, dass man es so behandelt wie der schlafende
Mathematiker das brennende Haus: "Das Problem ist im Prinzip lösbar.".

Ansatz: Man betrachtet die Regex als Kurzdarstellung eines NFA und
baut den DFA dazu. Durch Negieren der Ergebnisse bekommt man einen
DFA, der genau alle Strings annimmt, die das Original nicht annahm
(allerdings ist es nichttrivial, von diesem DFA wieder eine Regex
zu bekommen).

Die Vereinigung zweier regulärer Sprachen ist trivial (einfach
(regex1)|(regex2)).

Gesucht ist der Durchschnitt, den bekommt man nach den Morgan-Regeln.

Ob die Erfüllbarkeit entscheidbar ist, weiß ich nicht, das dürfte der
Knackpunkt sein.

Vermutlich will Ina aber nicht das, sondern die Teilmengenbeziehung
der beiden Sprachen prüfen. Das geht ebenfalls nach Morgan: L1
ist in L2 enthalten, wenn der Durchschnitt aus L1 und not-L2 leer
ist.

Ralf

Re: reguläre Ausdrückemit Wildcards aufbeiden Seiten

am 16.10.2006 20:12:07 von hjp-usenet2

On 2006-10-16 06:43, Ina Scherf wrote:
> Viel interessanter als meinen speziellen Fall finde ich im übrigen die
> Frage, ob es tatsächlich keinen Algorithmus für die Problemstellung der
> beidseitigen Wildcards gibt.

Es gibt ziemlich sicher einen. Man muss ihn nur finden :-).

Wenn wir mal vereinfachend davon ausgehen, dass "*" im Sinne von "0
oder mehr beliebige Zeichen" das einzige Wildcard ist, alle anderen
Zeichen nur sich selber matchen und die Pattern links und rechts
verankert sind:

Nennen wir eine Folge von Zeichen, die sich selbst matchen ein Literal.

Wenn beide Pattern mit einem Literal beginnen, wobei keines der Literale
ein Präfix des anderen ist, gibt es keinen Match:

Beispiel: /usr/x*cal und /usr/loc*. /usr/x ist kein Präfix von
/usr/loc, /usr/loc kein Präfix von /usr/x. Es gibt keinen String,
der beide Pattern matcht.

Wenn beide Pattern mit einem Literal enden, wobei keiner der Strings ein
Suffix des anderes ist, gibt es keinen Match.

Das ist einfach eine Umkehrung der Regel von oben.

Wenn eines der beiden Pattern nur aus einem Literal besteht, kann man
überprüfen, ob dieses Literal das Pattern matcht.

Sonst müsste es IMHO immer mindestens einen String geben, der beide
Pattern matcht.

Man kann die "mittleren" Literale des des einen Strings mit dem
Wildcard des anderen matchen und umgekehrt.


Habe ich was übersehen?

hp


--
_ | Peter J. Holzer | > Wieso sollte man etwas erfinden was nicht
|_|_) | Sysadmin WSR | > ist?
| | | hjp@hjp.at | Was sonst wäre der Sinn des Erfindens?
__/ | http://www.hjp.at/ | -- P. Einstein u. V. Gringmuth in desd

Re: reguläre Ausdrücke mit Wildcards auf beiden Seiten

am 17.10.2006 08:14:42 von Ina Scherf

> Die Frage ist zweifellos sinnvoll. Ob sie zur geschilderten
> Aufgabenstellung passt, ist eine andere Sache.
Vermutlich habe ich genau deshalb im ersten Post darauf hingewiesen, dass
mein spezieller Fall für die Lösung nicht wichtig ist. Mir ist diese Frage
zumindest bei meinen Überlegungen gekommen und daraufhin habe ich überlegt,
ob es für sowas nicht schon eine allgemeine Idee gibt. Ich hatte mir
zumindest vorgestellt, dass es das vielleicht öfter geben könnte.
Aber ich glaube tatsächlich, dass alle (so wie man es ja auch hier finden
könnte) das Problem eher dann haben, wenn sie auch gegen eine feste Menge
prüfen können. Zumindest ist mir bisher noch kein verschriftlichter Ansatz
in die Hände gefallen, der die Sache abstrakter angeht.

Gruss, Ina