Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / September 2007

Tip: Looking for answers? Try searching our database.

Getting substring by regex

Thread view: 
Christine Mayer - 06 Sep 2007 17:44 GMT
Hi, I got a String that is composed of digits, white space, numbers
and other characters.
Example:  03... London (first two digits of post code, plus 3 dots for
the remaining digits).

I want to go through the String and search for the first occurrence of
a letter (A-Za-Z).
Then I want the String from this point on, excluding the "post code
String" containing only numbers, whitespace and dots.
The class String seems to have a "split(regex) function, but this
didn't work for me.

Any idea how this could be done?

Thanks in advance,

Christine
Joshua Cranmer - 06 Sep 2007 21:56 GMT
> Hi, I got a String that is composed of digits, white space, numbers
> and other characters.
[quoted text clipped - 13 lines]
>
> Christine

Look at matching for regex:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html

Signature

Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth

Christine Mayer - 06 Sep 2007 22:07 GMT
Well, I know the Pattern class, but I don't think it could help here.
You were probably thinking of the split function (Which seems to do
just the same the String.split function does)

In the API, it gives the following example:

The input "boo:and:foo", for example, yields the following results
with these parameters:

  Regex     Limit     Result
   :     2     { "boo", "and:foo" }
   :     5     { "boo", "and", "foo" }
   :     -2     { "boo", "and", "foo" }
   o     5     { "b", "", ":and:f", "", "" }
   o     -2     { "b", "", ":and:f", "", "" }
   o     0     { "b", "", ":and:f" }

However, in all these examples there is only one character as "regex.
While in my case I need a whole String as regex, if found, I need to
chop of this part from the String...
Joshua Cranmer - 06 Sep 2007 22:49 GMT
> Well, I know the Pattern class, but I don't think it could help here.
> You were probably thinking of the split function (Which seems to do
> just the same the String.split function does)

You obviously did not read the link I gave you. On that page, under the
heading "Groups and capturing":
 Capturing groups are so named because, during a match, each
subsequence of the input sequence that matches such a group is saved.
The captured subsequence may be used later in the expression, via a back
reference, and may also *be retrieved from the matcher once the match
operation is complete.* [ My emphasis. ]
Signature

Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth

SadRed - 07 Sep 2007 01:10 GMT
> > Well, I know the Pattern class, but I don't think it could help here.
> > You were probably thinking of the split function (Which seems to do
[quoted text clipped - 10 lines]
> Beware of bugs in the above code; I have only proved it correct, not
> tried it. -- Donald E. Knuth

You don't nedd capturing groups for this simple task.
------------------------------------------
import java.util.regex.*;

public class ChristineMayer{

 public static void main(String[] args){

   String[] texts = {"03... London",
                     "18... Christine",
                     "35... Mayer",
                     "77... Bagdad"};

   String regx = "[A-Za-z]+"; // substring comosed of Eng. alphabet

   Pattern pat = Pattern.compile(regx);
   for (String s : texts){
     Matcher mat = pat.matcher(s);
     while (mat.find()){
       System.out.println(mat.group());
     }
   }
 }
}
---------------------------------------
Roedy Green - 07 Sep 2007 05:38 GMT
>The class String seems to have a "split(regex) function, but this
>didn't work for me.

see http://mindprod.com/jgloss/regex.html

See the section on matching vs finding.

You might find this easier to do by a char by char stepping through
the string.  Write yourself a method that categorizes a char and
returns an enum, e.g. ALPHA,  NUM, DOT, OTHER to use is the loop.

see http://mindprod.com/jgloss/finitestate.html

Signature

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.