Regular Expression problem.
Regular Expression problem.
Γνωρίζει κανένας Regular Expression που κάνει match μονο τον "κόσμο" της λέξης;
Για παράδειγμα να κάνει match το ROSE ή το rosE αλλα οχι το RoseASD, ΑSDROSE, ASDRoSEASD.
Για παράδειγμα να κάνει match το ROSE ή το rosE αλλα οχι το RoseASD, ΑSDROSE, ASDRoSEASD.
που θα πάει θα το δουμε...
- ~~Wind~~
- Gbyte level
- Posts: 1747
- Joined: Thu Nov 30, 2006 1:07 am
- Academic status: N>4
- Gender: ♂
- Location: *void
Re: Regular Expression problem.
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
θα επανελθω ελπιζω
Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it
Re: Regular Expression problem.
Νομίζω πω έχει δίκιο ο ~~Wind~~, ρίξε μια ματιά κι εδώ.
Είμαι ένας μοναχικός cowboy...
Re: Regular Expression problem.
To Rose ηταν απλα παράδειγμα, θέλω λύση για οποιαδήποτε λέξη.....~~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
θα επανελθω ελπιζω
που θα πάει θα το δουμε...
- ~~Wind~~
- Gbyte level
- Posts: 1747
- Joined: Thu Nov 30, 2006 1:07 am
- Academic status: N>4
- Gender: ♂
- Location: *void
Re: Regular Expression problem.
Μα υποτιθεται οτι τα regex λειτουργουν συγκρινοντας μια συμβολοσειρα με ενα pattern
Δε μπορει το pattern να ειναι αοριστο... !?
Τι ακριβως θες να κανεις? Παιρνεις μια λεξη και μετα ?
Δε μπορει το pattern να ειναι αοριστο... !?
Τι ακριβως θες να κανεις? Παιρνεις μια λεξη και μετα ?
Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it
- cyberpython
- Mbyte level
- Posts: 654
- Joined: Wed Nov 21, 2007 8:18 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Αθηνα
- Contact:
Re: Regular Expression problem.
Αν αυτό που θέλεις να κάνεις είναι να παίρνεις κείμενο π.χ. μία γραμμή και να βλέπεις αν υπάρχει matching string, μπορείς να περνάς τη γραμμή από ένα string tokenizer, μετά το αποτέλεσμα toLowercase() και σύγκριση με το string σου. Βέβαια, δεν είναι regex pattern, αλλά δε ξέρω τι ακριβώς θέλεις να κάνεις...rose wrote:Γνωρίζει κανένας Regular Expression που κάνει match μονο τον "κόσμο" της λέξης;
Για παράδειγμα να κάνει match το ROSE ή το rosE αλλα οχι το RoseASD, ΑSDROSE, ASDRoSEASD.
Re: Regular Expression problem.
~~Wind~~ wrote:Μα υποτιθεται οτι τα regex λειτουργουν συγκρινοντας μια συμβολοσειρα με ενα pattern
Δε μπορει το pattern να ειναι αοριστο... !?
Τι ακριβως θες να κανεις? Παιρνεις μια λεξη και μετα ?
Code: Select all
match(String txt,String mystring)
{
if mystring = PATTERN(txt);
return true;
}
cyberpython: Δεν μου κάνει, το component θέλει regular expressions
που θα πάει θα το δουμε...
- ~~Wind~~
- Gbyte level
- Posts: 1747
- Joined: Thu Nov 30, 2006 1:07 am
- Academic status: N>4
- Gender: ♂
- Location: *void
Re: Regular Expression problem.
Αυτο που θες αν καταλαβα σωστα ειναι να δινεις μια λεξη κ ενα string και να ελεγχεις αν η λεξη ή οποιαδηποτε μορφη περιεχεται στο string.
Αυτο βασικα που χρειαζεται να κανεις ειναι να φτιαξεις ενα καταλληλο pattern απο τη λεξη που δινεις.
Το κλειδι βρισκεται στο οτι το pattern ειναι στη τελικη, ενα ακομα string...που απλα εχει μια λιγο ειδικη δομη και πρεπει να το φτιαξεις εσυ.
τρεχει μια χαρα
μπορεις να παιξει με το txt για να δεις οτι βρισκει μονο τα RoSe κ rose κ οχι τα υπολοιπα
μπορεις ακομα να προσθεσεις ενα μετρητη και να δεις ποσες λεξεις βρισκεις απο το txt κλπ κλπ
Αυτο βασικα που χρειαζεται να κανεις ειναι να φτιαξεις ενα καταλληλο 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
μπορεις να παιξει με το txt για να δεις οτι βρισκει μονο τα RoSe κ rose κ οχι τα υπολοιπα
μπορεις ακομα να προσθεσεις ενα μετρητη και να δεις ποσες λεξεις βρισκεις απο το txt κλπ κλπ
- Spoiler: εμφάνιση/απόκρυψη
Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it
Re: Regular Expression problem.
Περίπου, βασικά αν η λέξη περιέχει το string και μόνο.~~Wind~~ wrote:Αυτο που θες αν καταλαβα σωστα ειναι να δινεις μια λεξη κ ενα string και να ελεγχεις αν η λεξη ή οποιαδηποτε μορφη περιεχεται στο string.
Κάτι τέτοιο θα ήθελα "if WORD equalsIgnoreCase TXT return true;" αλλα με regular expressions. Οπότε αν η λέξη περιέχεται στο string, αλλα το String περιέχει και άλλες λέξεις, τοτε προφανώς WORD!=STRING
Wind ευχαριστώ για τον χρόνο σου!
Λύση, σε 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";
}
που θα πάει θα το δουμε...