matching regular expressions


DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 3 of 3

Thread: matching regular expressions

  1. #1
    Join Date
    Jul 2004
    Posts
    6

    matching regular expressions

    Hi there,

    First off I'm new to java and coding in general so please bear with me. I'm trying to write a bit of code that will convert something like the following
    con(pk(B),pk(AS),pk(A),B)
    to this
    k_B, k_AS, k_A, B

    I have written the following code :

    Pattern pk = Pattern.compile("pk(.*)"); //Regular Expression Pattern

    int varsLen = initialVars.length();
    String[] elements = initialVars.split(","); //Split up the terms
    for (int x=0; x<elements.length; x++) {
    Matcher m = pk.matcher(elements[x]); //match array element
    boolean b = m.matches(); //Does array element match
    if (b) { //If there is a match
    pkStart = elements[x].indexOf("pk(", pkEnd) + "pk(".length();
    pkEnd = elements[x].indexOf(")",pkStart);
    elements[x] = elements[x].substring(pkStart,pkEnd);
    csPrelimOut = "k_"+elements[x];
    csOut = csOut.concat(csPrelimOut);
    } else {
    csPrelimOut = elements[x];
    csOut = csOut.concat(csPrelimOut);
    }

    }
    csOut = csOut.replace(' ',',');

    When I use this code it always works for the first element of the array but not the remaining elements. I'd get k_B from pk(B), but for the remaining pk() elements i'd just get them reiterated e.g. pk(AS) would remain pk(AS). I've never used regular expressions before so maybe that's where I'm going wrong. From "Pattern pk = Pattern.compile("pk(.*)");", I mean to set up a regular expression that starts with "pk(", then can be followed by 1 or more characters, and finally ended with ")". Does anyone have any idea how I might sort this out? Thanks a million.

  2. #2
    Join Date
    Feb 2004
    Posts
    808
    i'd have just done:

    string = string.replaceAll("con(","");
    string = string.replaceAll(")","");
    string = string.replaceAll("pk(","k_");
    The 6th edict:
    "A thing of reference thing can hold either a null thing or a thing to any thing whose thing is assignment compatible with the thing of the thing" - ArchAngel, www.dictionary.com et al.
    JAR tutorial GridBag tutorial Inherited Shapes Inheritance? String.split(); FTP?

  3. #3
    Join Date
    Feb 2004
    Posts
    808
    by the way, youre using the greedy quanitifer in your regex, which means that the following regular expression:

    pk(.*)

    matches the following string (in bold):

    con(pk(B),pk(AS),pk(A),B)


    think this might help you see why your things arent changing as expected
    -

    use a reluctant quantifier instead
    The 6th edict:
    "A thing of reference thing can hold either a null thing or a thing to any thing whose thing is assignment compatible with the thing of the thing" - ArchAngel, www.dictionary.com et al.
    JAR tutorial GridBag tutorial Inherited Shapes Inheritance? String.split(); FTP?

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center