User since
2007-10-18
3
Artikel
BenutzerIn
Guten Abend!
Habe ein kleines Problem an dem ich schon eine Weile dran bin....
Und zwar möchte ich alle Ordernname matchen, nach folgendem Beispiel...
[2000] band - artist
Wichtig das es immer genau ein Space ist...
Hier wäre mein Ansatz:
/^\[\d{4}\][ ][[:alnum:]][ ]-[ ][[:alnum:]]$/
/^\[\d{4}\]\s{1}.*\s{1}-{1}.*/
Grüsse
User since
2003-08-04
14371
Artikel
ModeratorIn
Beim ersten Ansatz fehlt zweimal ein + und die '[]' um das Leerzeichen kannst Du weglassen:
/^\[\d{4}\] [[:alnum:]]+ - [[:alnum:]]+$/
Beim zweiten Ansatz kannst Du die ganzen {1} weglassen und ".*" würde ich durch "\w+" ersetzen: /^\[\d{4}\]\s\w+\s-\w+$/
(ungetestet)
User since
2007-10-18
3
Artikel
BenutzerIn
Danke, das hat mir schon weitergeholfen!
[2000] band - artist
Das Problem hierbei ist nun noch, dass band sowie artist noch spaces enthalten können.
So besteht nur noch das Problem, dass zwar das: [2000]band - artist abgefangen wird, aber die RegEx nicht anschlägt wenn es zwei spaces sind.....
/^\[\d{4}\] .* - .*$/
User since
2007-10-18
3
Artikel
BenutzerIn
@ gast nein geht nicht, bei deiner Lösung können beliebig viele Spaces vorkommen....
Habe es nun mit zwei RegExp geschafft.... :
/^\[\d{4}\] .* - .*$/ && $test =~ /[[:alnum:]]+ - [[:alnum:]]+/
User since
2006-10-06
283
Artikel
BenutzerIn
Wenn die Anzahl der Spaces variiert und immer 1 Space vorhanden sein muss, aber mehrere folgen können, würde ich ein \s+ verwenden.
D'OH
Daniel