46

I have this URL:

http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&

And this regex pattern:

cID=[^&]*

Which produces this result:

cID=87B6XYZ964D293CF

How do I REMOVE the "cID="?

Thanks

3
  • what language? are you working in? Commented Jun 9, 2010 at 5:41
  • Which regex parser are you using? Commented Jun 9, 2010 at 5:43
  • Sorry, I should have been more specific. I'm working in javascript Commented Jun 9, 2010 at 5:54

6 Answers 6

39

You can either use lookbehind (not in Javascript):

(?<=cID=)[^&]*

Or you can use grouping and grab the first group:

cID=([^&]*)
Sign up to request clarification or add additional context in comments.

Comments

20

Generally speaking, to accomplish something like this, you have at least 3 options:

  • Use lookarounds, so you can match precisely what you want to capture
    • No lookbehind in Javascript, unfortunately
  • Use capturing group to capture specific strings
    • Near universally supported in all flavors
  • If all else fails, you can always just take a substring of the match
    • Works well if the length of the prefix/suffix to chop is a known constant

References


Examples

Given this test string:

i have 35 dogs, 16 cats and 10 elephants

These are the matches of some regex patterns:

You can also do multiple captures, for example:

  • (\d+) (cats|dogs) yields 2 match results (see on rubular.com)
    • Result 1: 35 dogs
      • Group 1 captures 35
      • Group 2 captures dogs
    • Result 2: 16 cats
      • Group 1 captures 16
      • Group 2 captures cats

Comments

9

With JavaScript, you'll want to use a capture group (put the part you want to capture inside ()) in your regular expression

var url = 'http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&';

var match = url.match(/cID=([^&]*)/);
// ["cID=876XYZ964D293CF", "876XYZ964D293CF"]

// match[0] is the whole pattern
// match[1] is the first capture group - ([^&]*)
// match will be 'false' if the match failed entirely

Comments

4

By using capturing groups:

cID=([^&]*)

and then get $1:

87B6XYZ964D293CF

Comments

2

Here's the Javascript code:

 var str = "http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&";
    var myReg = new RegExp("cID=([^&]*)", "i");
    var myMatch = myReg.exec(str);
    alert(myMatch[1]);

Comments

1

There is a special syntax in javascript which allows you to exclude unwanted match from the result. The syntax is "?:" In your case the solution would be the following

'http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&'.match(/(?:cID=+)([^&]*)/)[1];

1 Comment

This is excessive. 'http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&'.match(/cID=+([^&]*)/)[1]; is simpler as it does not require the non-capturing group and returns the same result as your example.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.