13

正規表現に「デフォルト」値を指定したいので、探していたものが見つからない場合は、見つかったかのようにデフォルト値が返されます。

これは正規表現を使用して行うことができますか?

4

3 に答える 3

4

「regexpが指定された文字列のどの部分にも一致しない場合は、次のサブ文字列に一致したふりをします:'foobar'」というある種の正規表現構文が必要なようです。このような機能は、私が見たどの正規表現構文にも存在しません。

おそらく次のようなものが必要になります。

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

(もちろん、これは使用している言語に合わせて調整する必要があります)

于 2009-08-24T04:27:19.793 に答える
1

私の知る限り、少なくともPerl互換の正規表現では、RegExp`sではそれを行うことはできません。

ここで自分で見ることができます。

于 2009-08-24T04:23:58.740 に答える
1

特定の言語なしでこれに答えるのは難しいですが、少なくともPerlでは、次のようなものが機能します。

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

1234

厳密には正規表現の一部ではありませんが、余分な条件付きブロックを回避します。

于 2009-08-24T08:10:19.890 に答える