Regex значение по умолчанию, если не найдено - PullRequest
8 голосов
/ 24 августа 2009

Я хотел бы предоставить своему регулярному выражению значение по умолчанию, поэтому, если искомая вещь не будет найдена, она вернет значение по умолчанию, как если бы оно нашло его.

Можно ли это сделать с помощью регулярных выражений?

Ответы [ 3 ]

2 голосов
/ 24 августа 2009

Звучит так, будто вы хотите какой-то синтаксис регулярных выражений, который говорит: «если регулярное выражение не соответствует какой-либо части данной строки, сделайте вид, что оно соответствует следующей подстроке: 'foobar'". Такой функции не существует ни в одном из синтаксисов регулярных выражений, которые я видел.

Возможно, вам понадобится что-то вроде этого:

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

(Это, конечно, нужно будет скорректировать в соответствии с языком, который вы используете)

1 голос
/ 24 августа 2009

Трудно ответить на это без определенного языка, но, по крайней мере, в Perl, что-то вроде этого работает:

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

1234

Не является частью регулярного выражения, но избегает дополнительного условного блока.

1 голос
/ 24 августа 2009

Насколько я знаю, вы не можете сделать это с помощью RegExp, по крайней мере, с помощью регулярных выражений, совместимых с Perl.

Вы можете видеть сами по себе здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...