NiaKitty
NiaKitty

Reputation: 93

How do I manipulate strings with regex?

I'm fairly new to java and I'm trying to get a part of a string:

Say I have a URL and I want a specific part of it, such as a filename:

String url = "http://example.com/filename02563.zip";

The 02563 will be generated at random every time and it's now always 5 characters long. I want to have java find what's between "m/" (from .com/) to the end of the line to get the filename alone.

Now consider this example:

Say I have an html file that I want a snippet extracted from. Below would be the extracted example:

<applet name=someApplet id=game width="100%" height="100%" archive=someJarFile0456799.jar  code=classInsideAJarFile.class mayscript>

I want to extract the jar filename, so I want to get the text between "ve=" and ".jar". The extension will always be ".jar", so including this is not important.

How would I do this? If possible, could you comment the code so I understand what's happening?

Upvotes: 0

Views: 113

Answers (3)

Joey
Joey

Reputation: 354456

Use the Java URI class where you can access the individual elements.

URI uri = new URI("http://example.com/filename02563.zip");
String filename = uri.getPath();

Granted, this will need a little more work if the resource no longer resides in the root path.

Upvotes: 3

Pshemo
Pshemo

Reputation: 124215

You have answers for your first question so this is for second one. Normally I would use some XML parser but your example is not valid XML file so this will be solved with regex (as you wanted).

String url = "<applet name=someApplet id=game width=\"100%\" height=\"100%\" archive=someJarFile0456799.jar  code=classInsideAJarFile.class mayscript>";

Pattern pattern= Pattern.compile("(?<=archive=).*?(?= )");
Matcher m=pattern.matcher(url);
if(m.find())
    System.out.println(m.group());

output:

someJarFile0456799.jar

Upvotes: 0

Hunter McMillen
Hunter McMillen

Reputation: 61512

You can use the lastIndexOf() and substring() methods from the String class to extract a specific piece of a String:

String url      = "http://example.com/filename02563.zip";
String filename = url.substring(url.lastIndexOf("/") + 1); //+1 skips ahead of the '/'

Upvotes: 2

Related Questions