Regular Expression problem.

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
rose
Gbyte level
Gbyte level
Posts: 1921
Joined: Sun May 20, 2007 8:59 pm
Academic status: 4th year
Gender:

Regular Expression problem.

Post by rose » Fri Oct 17, 2008 5:31 pm

Γνωρίζει κανένας Regular Expression που κάνει match μονο τον "κόσμο" της λέξης;
Για παράδειγμα να κάνει match το ROSE ή το rosE αλλα οχι το RoseASD, ΑSDROSE, ASDRoSEASD.
που θα πάει θα το δουμε...
User avatar
~~Wind~~
Gbyte level
Gbyte level
Posts: 1747
Joined: Thu Nov 30, 2006 1:07 am
Academic status: N>4
Gender:
Location: *void

Re: Regular Expression problem.

Post by ~~Wind~~ » Fri Oct 17, 2008 6:25 pm

Code: Select all

public static boolean findRose(String word){
		String rosepattern="^([r|R])([o|O])([s|S])([e|E])$";
		if (word.matches(rosepattern))
			return true;
		return false;
}//findRose
μπακαλικο λιγακι αλλα τα εχω ξεχασει..,πρεπει να δουλευει
θα επανελθω ελπιζω :-p
ImageImage
Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it
User avatar
Luke
Gbyte level
Gbyte level
Posts: 1388
Joined: Wed Aug 09, 2006 11:19 am
Academic status: Alumnus/a
Gender:

Re: Regular Expression problem.

Post by Luke » Fri Oct 17, 2008 8:37 pm

Νομίζω πω έχει δίκιο ο ~~Wind~~, ρίξε μια ματιά κι εδώ.
Είμαι ένας μοναχικός cowboy...
User avatar
rose
Gbyte level
Gbyte level
Posts: 1921
Joined: Sun May 20, 2007 8:59 pm
Academic status: 4th year
Gender:

Re: Regular Expression problem.

Post by rose » Fri Oct 17, 2008 9:37 pm

~~Wind~~ wrote:

Code: Select all

public static boolean findRose(String word){
String rosepattern="^([r|R])([o|O])([s|S])([e|E])$";
if (word.matches(rosepattern))
return true;
return false;
}//findRose
μπακαλικο λιγακι αλλα τα εχω ξεχασει..,πρεπει να δουλευει
θα επανελθω ελπιζω :-p
To Rose ηταν απλα παράδειγμα, θέλω λύση για οποιαδήποτε λέξη..... :cool:
που θα πάει θα το δουμε...
User avatar
~~Wind~~
Gbyte level
Gbyte level
Posts: 1747
Joined: Thu Nov 30, 2006 1:07 am
Academic status: N>4
Gender:
Location: *void

Re: Regular Expression problem.

Post by ~~Wind~~ » Fri Oct 17, 2008 9:45 pm

Μα υποτιθεται οτι τα regex λειτουργουν συγκρινοντας μια συμβολοσειρα με ενα pattern
Δε μπορει το pattern να ειναι αοριστο... !?

Τι ακριβως θες να κανεις? Παιρνεις μια λεξη και μετα ?
ImageImage
Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it
User avatar
cyberpython
Mbyte level
Mbyte level
Posts: 654
Joined: Wed Nov 21, 2007 8:18 pm
Academic status: Alumnus/a
Gender:
Location: Αθηνα
Contact:

Re: Regular Expression problem.

Post by cyberpython » Fri Oct 17, 2008 10:00 pm

rose wrote:Γνωρίζει κανένας Regular Expression που κάνει match μονο τον "κόσμο" της λέξης;
Για παράδειγμα να κάνει match το ROSE ή το rosE αλλα οχι το RoseASD, ΑSDROSE, ASDRoSEASD.
Αν αυτό που θέλεις να κάνεις είναι να παίρνεις κείμενο π.χ. μία γραμμή και να βλέπεις αν υπάρχει matching string, μπορείς να περνάς τη γραμμή από ένα string tokenizer, μετά το αποτέλεσμα toLowercase() και σύγκριση με το string σου. Βέβαια, δεν είναι regex pattern, αλλά δε ξέρω τι ακριβώς θέλεις να κάνεις...
User avatar
rose
Gbyte level
Gbyte level
Posts: 1921
Joined: Sun May 20, 2007 8:59 pm
Academic status: 4th year
Gender:

Re: Regular Expression problem.

Post by rose » Fri Oct 17, 2008 10:19 pm

~~Wind~~ wrote:Μα υποτιθεται οτι τα regex λειτουργουν συγκρινοντας μια συμβολοσειρα με ενα pattern
Δε μπορει το pattern να ειναι αοριστο... !?

Τι ακριβως θες να κανεις? Παιρνεις μια λεξη και μετα ?

Code: Select all



match(String txt,String mystring)
{

    if mystring = PATTERN(txt);   
    return true;

}
To PATTERN?

cyberpython: Δεν μου κάνει, το component θέλει regular expressions
που θα πάει θα το δουμε...
User avatar
~~Wind~~
Gbyte level
Gbyte level
Posts: 1747
Joined: Thu Nov 30, 2006 1:07 am
Academic status: N>4
Gender:
Location: *void

Re: Regular Expression problem.

Post by ~~Wind~~ » Sat Oct 18, 2008 2:31 am

Αυτο που θες αν καταλαβα σωστα ειναι να δινεις μια λεξη κ ενα string και να ελεγχεις αν η λεξη ή οποιαδηποτε μορφη περιεχεται στο string.
Αυτο βασικα που χρειαζεται να κανεις ειναι να φτιαξεις ενα καταλληλο pattern απο τη λεξη που δινεις.
Το κλειδι βρισκεται στο οτι το pattern ειναι στη τελικη, ενα ακομα string...που απλα εχει μια λιγο ειδικη δομη και πρεπει να το φτιαξεις εσυ.

Code: Select all

package regexproj;

import java.util.StringTokenizer;

/**
 * @author ~~Wind~~
 */
public class RegProj {
    public static void main(String[] args) {
        String word = "rose";
        String txt = "roseabc RoSe abcrose rose abcroseabc";
        
        if (matchRegStr(word,txt))
            System.out.println(word.concat(" exists in ").concat(txt));
        else System.out.println("FAIL!!");
    }//main
    
    //ψαχνει να βρει αν το word κ οποιαδηποτε μορφη αυτου βρισκεται στο txt
    static boolean matchRegStr (String word, String txt) { 
        String pattern=""; 
        StringTokenizer txtToken = new StringTokenizer(txt," ");
        
        for (int i=0; i<word.length(); i++)
            pattern += "([" + Character.toLowerCase(word.charAt(i)) + "]|[" + Character.toUpperCase(word.charAt(i)) + "])" ;
        
        while (txtToken.hasMoreTokens())
            if ((txtToken.nextToken()).matches(pattern))
                return true;
        
        return false;
    }//matchRegStr
}//regexproj 
τρεχει μια χαρα :smt001

μπορεις να παιξει με το txt για να δεις οτι βρισκει μονο τα RoSe κ rose κ οχι τα υπολοιπα
μπορεις ακομα να προσθεσεις ενα μετρητη και να δεις ποσες λεξεις βρισκεις απο το txt κλπ κλπ
:smt024

Spoiler: εμφάνιση/απόκρυψη
το δωρο σου ειναι αυτο :smt016
ImageImage
Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it
User avatar
PaP
Venus Project Founder
Venus Project Founder
Posts: 1077
Joined: Wed Apr 21, 2004 12:06 am
Academic status: Alumnus/a
Location: San Francisco
Contact:

Re: Regular Expression problem.

Post by PaP » Sat Oct 18, 2008 7:45 pm

http://www.rubular.com/
τέσταρε εδώ
User avatar
rose
Gbyte level
Gbyte level
Posts: 1921
Joined: Sun May 20, 2007 8:59 pm
Academic status: 4th year
Gender:

Re: Regular Expression problem.

Post by rose » Sun Oct 19, 2008 8:50 pm

~~Wind~~ wrote:Αυτο που θες αν καταλαβα σωστα ειναι να δινεις μια λεξη κ ενα string και να ελεγχεις αν η λεξη ή οποιαδηποτε μορφη περιεχεται στο string.
Περίπου, βασικά αν η λέξη περιέχει το string και μόνο.


Κάτι τέτοιο θα ήθελα "if WORD equalsIgnoreCase TXT return true;" αλλα με regular expressions. Οπότε αν η λέξη περιέχεται στο string, αλλα το String περιέχει και άλλες λέξεις, τοτε προφανώς WORD!=STRING
Wind ευχαριστώ για τον χρόνο σου! :smt023


Λύση, σε perl αλλα το pattern ειναι γενικό.

Code: Select all

$word ="rose";
$txt ="ROSE";
 #
 #if $word contains the $txt text and nothing but the $txt text (+ ignorecase), print Case Match! 
 if($word=~m/^$txt$/i)
 {
    print "Case Match!\n";
 }
Συγνώμη που δεν έδωσα ακριβεις πληροφορίες!!!!!
που θα πάει θα το δουμε...
Post Reply

Return to “Προγραμματισμός”