regular expression

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

regular expression

Δημοσίευση από pimpogio » 25 Μαρ 2011 11:30

εχω ενα string
και θελω να κανω match: (diaforoi_xaraktires)keyword1(diaforoi_xaraktires)keyword2=akereos_arithmos(diaforoi_xaraktires)

pos tha kano match to pattern και αν γινει match να παιρνω τον ακεραιο αριθμο να το επεξεργαζομαι και να τον επεξεργασμενο αριθμο να τον αντικαθιστω στη θεση του αρχικου αριθμου στο αρχικο string ?

Προς το παρον εχω κανει αυτο αλλα ειναι πολυ χαλια

Κώδικας: Επιλογή όλων

String s1="sdgdfg23465243tgykeyword1kljlhk@#keyword2=77kjhkjkjh78";

Pattern exp=Pattern.compile("keyword2=\\d+");
Pattern exp2=Pattern.compile("\\d+");
Matcher m=exp.matcher(s1);
m.find();
String s2=s1.subSequence(m.start(), m.end()).toString();
Matcher m2=exp2.matcher(s2);
m2.find();
String s3=s2.subSequence(m2.start(), m2.end()).toString();
int mynum=Integer.parseInt(s3)+666;
String f=s1.subSequence(0,m.start() ).toString()+"keyword2="+mynum+s1.substring(m.end());
System.out.println(f);

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

regular expression

Δημοσίευση από gvre » 25 Μαρ 2011 14:02

Σε php θα μπορούσε να γίνει κάπως έτσι

Κώδικας: Επιλογή όλων

<?php
$pattern = "#keyword1.+?keyword2=&#40;\d+&#41;#";
$s = "sdgdfg23465243tgykeyword1kljlhk@#keyword2=77abcd78";

if &#40;preg_match&#40;$pattern, $s, $m&#41;&#41;
&#123;
        $oldNumber = "keyword2=" . $m&#91;1&#93;;
        $newNumber = "keyword2=123";

        $s = str_replace&#40;$oldNumber, $newNumber, $s&#41;;
        echo $s;
&#125;
?>

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

regular expression

Δημοσίευση από pimpogio » 25 Μαρ 2011 14:36

ωραιος ευχαριστω θα το δοκιμασω στη j πιστευω το ιδιο θα ειναι...

λοιπον βρεθηκε...

mystring.matches("(.+)keyword1.+?keyword2=(\\d+)(.+)");
Τελευταία επεξεργασία από το μέλος pimpogio την 25 Μαρ 2011 14:49, έχει επεξεργασθεί 2 φορές συνολικά.

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

regular expression

Δημοσίευση από gvre » 25 Μαρ 2011 14:41

Η λογική είναι η ίδια. Το σημαντικό είναι να μην κάνεις αντικατάσταση μόνο του αριθμού αλλά του "keyword2=παλιός_αριθμός" με "keyword2=νέος_αριθμός".

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 4 επισκέπτες