Seite 1 von 1

probleme mit regex ( /^((.[^ ])+ )+$/ !~ '1 c h a r ' ???)

Verfasst: Samstag 24. Februar 2007, 21:53
von Costi
halo,
ich will eien regex, die erkennt, ob beliebig viele zeichen mit einen ' ' am ende folgen. das mueste doch '^((.[^ ])+ )+$' sein oder?

warum MATCHt das aber nicht bei nur einen zeichen:

Code: Alles auswählen

>>> re.match('^((.[^ ])+ )+$', 'fery wyf 346u ^&*( ')
<_sre.SRE_Match object at 0xb7d95578>
>>> print re.match('^((.[^ ])+ )+$', 'f w 3 ^ ')
None


danke

Verfasst: Samstag 24. Februar 2007, 21:58
von apollo13
Ich hätte ^[^ ]* $ gesagt

Verfasst: Samstag 24. Februar 2007, 22:00
von mq
"(.[^ ])+" heisst "ein beliebiges Zeichen, dann ein Zeichen, dass kein Leerzeichen ist, und diese Kombination beliebig oft wiederholt"

Verfasst: Samstag 24. Februar 2007, 22:01
von apollo13
achja ich würde mir http://www.amk.ca/python/howto/regex/ anschauen!

Verfasst: Samstag 24. Februar 2007, 22:03
von Costi
"(.[^ ])+" heisst "ein beliebiges Zeichen, dann ein Zeichen, dass kein Leerzeichen ist, und diese Kombination beliebig oft wiederholt"
hmm, ich dachte ein belibiges zeichen, dass kein leerzeichen ist. ein leerzeichen. und das alles beliebig oft

edit:
ahh, jetzt sehe ich auch mein denkfehler: ich dachte \w[^b] wuerde ein buchstabe aber kein b und nicht ein buchstabe und danach irgendetwas was nich b ist MATCHen

Verfasst: Samstag 24. Februar 2007, 23:48
von Costi
und warum geht das nicht:

Code: Alles auswählen

>>> print re.match('^([^ ]+ ){2, 5}$', 'srg ety dsf ')
None
das sind doch insgesamt 3 [^ ]+ und drei liegt zwischen 2 und 5 oder?

Verfasst: Sonntag 25. Februar 2007, 09:32
von birkenfeld
Du darfst bei der erlaubten Anzahl keine Leerzeichen einfügen. {2,5} statt {2, 5} funktioniert.

Verfasst: Donnerstag 1. März 2007, 23:11
von Joghurt
Jamie Zawinski hat geschrieben:Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.
SCNR