2

私は何時間も検索し、すでにさまざまなパターンをたくさん試しました - regexで達成したくない簡単なことがありますが、どういうわけか私が望むようには機能しません:

可能な文字列

文字列1

これはテキスト \0"§%lfsdrlsrblabla\0\0\0}dfglpdfgl です

文字列 2

これは何かのテキストです

文字列3

これはテキストです \0

希望試合・結果

これは何かのテキストです

私は単にすべてを一致させたいだけです-それまでとそれを除い\0-結果は1つだけになります。( の前のすべて\0)私の場合に
重要なのは、 が指定されていなくても、常に一致すること\0です。

ご協力いただきありがとうございます!

4

2 に答える 2

1

好き

@"^((?!\\0).)*"

任意の文字列を使用して実装するのは非常に簡単だからです。基本的なトリックは否定的な先読みです。これは、この時点で始まる文字列が内部の正規表現と一致しないことを表明します。これにワイルドカードを付けて、「文字通り、文字列の先頭にない任意の文字。文字列を変更する必要がある場合、これは簡単な更新です。

@"^((?!--STRING--).)*)"

その文字列を適切にエスケープする限り。一体、このパターンでは、regex_escape区切り文字列を生成する関数にすぎません。

ボーナス: + の代わりに * を使用すると、文字列が区切り文字で始まる場合に有効な一致として空白文字列が返されます。

于 2013-07-24T17:35:53.730 に答える