tags:

views:

246

answers:

3

Hi,

I would like to supply my regular expression with a 'default' value, so if the thing I was looking for is not found, it will return the default value as if it had found it.

Is this possible to do using regex?

A: 

As far as I know, you can't do that with RegExp`s, at least with Perl Compatible Regular Expressions.

You can see by your self here.

Cleiton
+1  A: 

It sounds like you want some sort of regex syntax that says "if the regexp does not match any part of the given string pretend that it matched the following substring: 'foobar'". Such a feature does not exist in any regexp syntax I've seen.

You'll probably need to something like this:

matched_string = string.find_regex_match(regex);
if(matched_string == null) {
  string = "default";
}

(This will of course need to be adjusted to the language you're using)

sepp2k
Bugger. I hoped I wouldn't have to do it that way. Thanks
Zim
A: 

It's hard to answer this without a specific language, but in Perl at least, something like this works:

$string='hello';
$default = 1234;
($match) = ($string =~ m/(\d+)/ or $default);
print "$match\n";

1234

Not strictly part of the regex, but avoids the extra conditional block.

ire_and_curses