Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex default value if not found

Tags:

regex

default

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?

like image 628
Zim Avatar asked Aug 24 '09 04:08

Zim


3 Answers

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)

like image 116
sepp2k Avatar answered Oct 25 '22 07:10

sepp2k


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.

like image 44
ire_and_curses Avatar answered Oct 25 '22 06:10

ire_and_curses


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.

like image 36
Cleiton Avatar answered Oct 25 '22 08:10

Cleiton