Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Reguläre Ausdrücke angeben » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Reguläre Ausdrücke angeben
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Schattenklinge
unregistriert
Reguläre Ausdrücke angeben Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo, ich bins nochmal,

ich sitze gerade an einer Aufgabe und bin mir unsicher, in meinem skript steht kaum was dazu...

ich soll in der Aufgabe einen regulären Ausdrück über {a,b,c} angeben:
(a) wort w mit wortlänge w % 3 == 0 oder wortlänge w % 2 == 0.

und

(b) wort w mit w enthält nicht die teilfolge ab

Meine Frage dazu ist jetzt: wie gehe ich an solchen aufgaben ran? ich meine ich hätte jetzt bei der a gesagt: (a+b+c)^*, aber das schließt ja nicht alles ein. Ich habe mir auch überlegt, wenn durch 3 teilbar und durch 2 teilbar, dann auch durch 6 teilbar, also müssen es immer 6 buchstaben sein, kann ich das dann einfach durch (a+b+c)^6n beschreiben?

Danke schonmal
15.11.2015 11:11
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das Vielfache von 6 wäre ja Vielfaches von 2 UND Vielfaches von 3.
Überlegen wir uns das Vielfache von 3.

Vielfaches von 3 kriegst du so hin: ^((a|b|c){3})*$
Erst definieren, wie es für genau 3 Buchstaben aussieht. Dann mit dem Stern Vielfache zulassen.

__________________
Syntax Highlighting fürs Board (Link)
15.11.2015 12:42 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Schattenklinge
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi,

was bedeutet denn dieses ^ vorne dran? Die Schreibweise ist mir nicht bekannt.
((a+b+c)(a+b+c)(a+b+c))* sind 3 buchstaben, durch 3 teilbar, vielfaches von 3 ist da auch drin. jetzt hätte ich gesagt das leere wort noch und ((a+b+c)(a+b+c))*. das erscheint mir aber bisschen einfach...
15.11.2015 12:58
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

^ ist der Zeilenanfang, $ das Ende. So stelle ich sicher, dass nicht ein Teil des Wortes auf 5 Buchstaben gefunden wird.
Das leere Wort ist schon enthalten, da der Stern auch für 0 mal stehen kann (mindestens einmal wäre +).
Jetzt noch ODER verknüpfen mit 2 Buchstaben, dann bist du fertig mit der a).
Nimm dir einen Texteditor (z.B. notepad++ für Windows oder gedit für Linux), dann kannst du Texte durchsuchen und rumprobieren.

__________________
Syntax Highlighting fürs Board (Link)
15.11.2015 13:20 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Schattenklinge
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi,

also kann ich das so schreiben wie ich es gerade geschrieben hab?
((a+b+c)(a+b+c)(a+b+c))* + ((a+b+c)(a+b+c))* ?
15.11.2015 13:29
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

+ ist kein ODER, sondern gibt die Anzahl an.
Mit a+b+c findest du also nicht bcb (3 Buchstaben), dafür aber aaaabbbbbbbbc.

__________________
Syntax Highlighting fürs Board (Link)
15.11.2015 13:32 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Schattenklinge
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi, mit + ist bei uns im skript ein oder gemeint...

Ich kanns auch so schreiben wie du es meinst:

((a|b|c)(a|b|c)(a|b|c))* | ((a|b|c)(a|b|c))*
15.11.2015 13:35
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

So passt die Sache.
Reguläre Ausdrücke sind eigentlich standardisiert, ich sehe den Sinn nicht, seine eigene Version zu definieren verwirrt

__________________
Syntax Highlighting fürs Board (Link)
15.11.2015 13:37 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Schattenklinge
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Alles klar, danke

nochmal als weitere übung:
und wenn ich jetzt die anzahl der a mod 3 = 0 konstruieren oder anzahl der b mod 2 = 0 konstruieren will, wie mach ich das?

Gehe ich einfach davon aus, dass ich z.B. sowas mache?
Erstmal für mod 3:

(a (b|c)* a (b|c)* a(b|c)*)* ? Dann hab ich immer 3mal a und die Anzahl der a sind immer vielfache von 3?
15.11.2015 13:56
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Kommen erst die a und dann die b, also z.B. aaaaaaaaabbbb, oder können die auch vermischt auftreten?

__________________
Syntax Highlighting fürs Board (Link)
15.11.2015 14:01 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Schattenklinge
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

anzahl a mod 3 = 0 oder anzahl b mod 2 = 0
Das wort ist sonst nicht weiter definiert
15.11.2015 14:07
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Damit stellst du sicher, dass die Anzahl der a Vielfaches von 3 ist:
^(b|c)*((a(b|c)*){3})*$
Wir haben zu Beginn eine beliebig lange Folge von b und c. Dann kommt drei mal (a, gefolgt von b und c). Diese Gruppe darf aber beliebig oft kommen.

__________________
Syntax Highlighting fürs Board (Link)
15.11.2015 14:25 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Müller
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich komme mit dem Vorschlag für Aufgabe b :
( (b+c)* (a+c)* c (b+c)* ) + ( (b+c)* . (a+b) * )
aber ich bin mir nicht sicher , dass alles abgedeckt ist
16.11.2015 15:28
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ist das + jetzt wieder ein ODER?
Wie auch immer, es klappt nicht wie geplant.
Dafür gibt es die "negative look-ahead assertion".
^((?!ab).)*$

__________________
Syntax Highlighting fürs Board (Link)
16.11.2015 15:48 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Reguläre Ausdrücke angeben