0

空の文字列から正規表現を作成する場合、何にも一致しないようにするにはどうすればよいですか?

RegexOptions.DoNotMatchWithEmptyなどのオプションを探していました。

明確にするために:

RegExの作成に使用される文字列を制御できないと仮定します。文字列は空にすることができ、RegExオブジェクトを作成する必要があります。おそらく、正規表現をnullに設定して、アップストリームに多くのnullチェックを追加することもできますが、そうはしません。最善の解決策は、RegExが空の文字列で構築されている場合に何も一致しないように指示するRegexOptionsフラグでした。しかし、それは利用できません。

4

2 に答える 2

3

これをやってみませんか

if (string.IsNullOrEmpty(regex))
{
    return false;
}
// standard regex lookup goes here

更新:あるいは、何にも一致しない正規表現を返すだけです

if (string.IsNullOrEmpty(regex))
{
    return new Regex("a^");
}
return new Regex(regex);

^文字がテスト対象の文字列の先頭と一致するため(Multiline正規表現オプションが指定されていない限り)、これは機能しますが、すでに別の文字と一致しているため、これは明らかに一致しませんa

于 2012-10-16T12:43:07.457 に答える
1

デフォルトとして以下を試してください。

Regex.IsMatch(inputString, @"^(?!\s*$).+")

これは、空または空白ではないすべての文字列に対して機能するはずです。RegExが実際に空の文字列であるかどうかを確認したいだけの場合は、を使用してくださいString.IsNullOrWhitespace

于 2012-10-16T12:42:09.723 に答える