R4ZoR:Γεια σας, εχω ενα προβλημα με ενα σιγκεκριμενο String, στο οποιο δεν μπορω να αποκομισω ενα κομματι του, με την χρηση του regular expression. δεν ξερω αν ειναι γνωστη αυτη η τεχνολογια, την εμαθα προσφατα και μου φανικε ιδιαιτερα ευκολος τροπος για να κοβεις strings.
λοιπον, το string ειναι αυτο :
"http://www.youtube.com/jp.swf?video_id=qg1ckCkm8YI&eurl=&iurl=http://img.youtube.com/vi/qg1ckCkm8YI/default.jpg&t=OEgsToPDskJCPW5DvMKeM3srnQ5e0LS"
θελω απο εδω, να παρω το κομματι που λεει : "http://img.youtube.com/vi/qg1ckCkm8YI/default.jpg"
το expression που σκευτικα εγω, ειναι αυτο : "^.+[iurl=](.+)[t=](.+)$"
ομως δεν λεει να δουλεψει!!
εχει κανεις ιδεα ποιο ειναι το σωστο expression? ευχαριστω!
Το πρόβλημά σου είναι το αρχικό .+ το οποίο "καταναλώνει" όλο το string. Αυτό στις regular expressions λέγεται greedy expression, γιατί προσπαθεί να ταιριάξει με όσο το δυνατόν περισσότερο τμήμα του input της. Οι τελεστές + και * είναι greedy, και τα non greedy ισοδύναμά τους είναι τα +? και *?
Δεν είναι απαραίτητο όμως να φτιάξεις ένα regex που να πιάνει όλο σου το string, αρκεί το κομμάτι που θέλεις να απομονώσεις. Στην περίπτωση αυτή αρκεί το &iurl=(.+?)&t=(.+)$
Νατάσα Μανουσοπούλου