Regular Expression Help [Java]


 
Thread Tools Search this Thread
Top Forums Programming Regular Expression Help [Java]
# 1  
Old 02-11-2011
Question Regular Expression Help [Java]

So i'm trying to write a regular expression to help me pull id numbers from a string, the input would look something like:

"Product Name" stock=6 sid=0x000000000034c000 pid=0xd70

What I'd like is a regular expression that I could enter that would return just the pid value (and one for the sid value too). The problem is I can't be sure the pid or sid will always be the same length, so rather than the input above I might get an entry that says:

"Different Product Name" stock=45 sid=0x000000000034c000 pid=0xa11713

So in the first one I'd like the expression to cut out 0xd70 and in the second one I'd like it to cut out 0xa11713. If it is any help I know that the pid is never more than 8 characters long after the 0x, and that the sid is never more than 16 (I'm not sure if shipping id can be shorter than 16 or not).

I'm new to using regular expressions, and I've figured out hot to match then number entry when I know the length, but I can't figure it out for a variable length.

input1: "Product Name" stock=6 sid=0x000000000034c000 pid=0xd70
input2: "Product Name" stock=6 sid=0x000000000034c000 pid=0xa11713
regex: pid=.....
output1: pid=0xd70
output2: pid=0xa11 <-- missing 713

Thanks for the help.
# 2  
Old 02-11-2011
Create a pattern using
Code:
Pattern p = Pattern.compile( "sid=(0x[a-z0-9]+)\s+pid=(0x[a-z0-9]+)" );

and then match it against your input using
Code:
Matcher m = p.matcher( input );

m.group( 1 ) will then be the SID, m.group( 2 ) will be the PID.
This User Gave Thanks to pludi For This Post:
# 3  
Old 02-11-2011
Oh, ok. So its the + sign that allows the expression to continue looking. Thank you.

Next question then would be, if I wanted to extract the product id directly with out the pid= infront of it, how would I do that? So for example:

input: "Product Name" stock=6 sid=0x000000000034c000 pid=0xd70
output: 0xd70

Last edited by Noremak17; 02-11-2011 at 11:12 AM.. Reason: minor spelling error
# 4  
Old 02-11-2011
Code:
$
$
$ # Display the content of the Java program
$
$ cat -n ExtractSidPid.java
     1  import java.util.regex.Matcher;
     2  import java.util.regex.Pattern;
     3  public class ExtractSidPid {
     4    public static void main(String args[]) {
     5      String str = args[0];
     6      Pattern p = Pattern.compile("sid=([^ ]+) .*pid=([^ ]+)");
     7      // Try to match the string
     8      Matcher matcher = p.matcher(str);
     9      // Display both match groups
    10      while (matcher.find()) {
    11        System.out.println("SID = " + matcher.group(1));
    12        System.out.println("PID = " + matcher.group(2));
    13      }
    14    }
    15  }
$
$
$ # Compile
$
$ javac ExtractSidPid.java
$
$ # Run the program passing a test string as argument
$
$ java ExtractSidPid "Product Name stock=6 sid=0x000000000034c000 pid=0xd70"
SID = 0x000000000034c000
PID = 0xd70
$
$ # Once more
$
$ java ExtractSidPid "Different Product Name stock=45 sid=0x000000000034c000 pid=0xa11713"
SID = 0x000000000034c000
PID = 0xa11713
$
$
$

tyler_durden
This User Gave Thanks to durden_tyler For This Post:
# 5  
Old 02-11-2011
Thank you, I'm starting to get the hang of these expressions I think.

Oh I see now, the groups that pludi mentioned are the numbers. Ok, I didn't understand that. Thank you both very much.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

2. Shell Programming and Scripting

Help with regular expression

I have file with following data, http://www.some.com/web11.html http://www.some.com/web/112.html http://www.some.com/web/21.html http://www.some.com/342.html http://www.some.com/plk.html http://www.some.com/abh.html http://www.some.com/yte.html http://www.some.com/tyr/098.html... (4 Replies)
Discussion started by: sol_nov
4 Replies

3. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

4. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

5. Programming

Need Java regular expression

Hi, I am looking for a Java regular expression to match the below pattern of a java script file. var so = object.device.load('camera','value'); I want to grep out such lines present in the *.js files. The conditions are: a) the line may start with blank space(s) b) always the... (0 Replies)
Discussion started by: royalibrahim
0 Replies

6. Programming

Java regular expression help

Hi, I need to write a java regular expression that has the following rules: a) should not start with space or '.' (dot) character(s) b) should not contain spaces in between of the characters c) total characters length must be less than 80 d) should not be empty string Can anyone... (0 Replies)
Discussion started by: royalibrahim
0 Replies

7. Programming

java regular expression

Hello all, I need to match the red expression in the following lines : MACRO_P+P-_scrambledServices_REM_PRC30.xml MACRO_P+P-_scrambledServices_REM_RS636.xml MACRO_P+P-_scrambledServices_REM_RS535.xml and so on... Can anyone give me a regular expression to match those characters ? I am... (0 Replies)
Discussion started by: lsaas
0 Replies

8. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

9. Shell Programming and Scripting

regular expression help

hello all.. I'm a bit new to this site.. and I hope to learn alot.. but I've been having a hard time figuring this out. I'm horrible with regular expressions.. so any help would be greatly appreciated. I have a file with a list of names like this: LASTNAME, FIRSTNAME, MIDDLEINITIAL how can... (5 Replies)
Discussion started by: mac2118
5 Replies

10. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies
Login or Register to Ask a Question