0

私はいくつかのテキストを持っています

"Lorem ipsum dolor sit amet, consectetuer adipiscing elit."

そして、ユーザー入力から生成された正規表現があります。

@".*ip.*"

ご想像のとおり、これは行全体に一致するため、この式を単語境界で囲みます。

@"\b.*ip.*\b"

プロセッサは貪欲であるため、これでもテキスト全体に一致します。だから、繰り返しを怠惰にしてみました。

@"\b.*?ip.*?\b"

これはより良いですが、一致します

  1. Lorem ipsum
  2. dolor sit amet, consectetuer adipiscing

元のパターンを拡張して、@".*ip.*"単語全体とキャプチャを遅延一致させるにはどうすればよいですか?

  1. ipsum
  2. adipiscing

この正規表現テスターは、質問に答えるのに役立つかもしれません

4

3 に答える 3

5

\w*代わりに使用しないのはなぜですか.*?

@"\w*ip\w*"

に含まれているため、これも と に一致_します。除外したい場合は、代わりに明示的に使用できます。0-9\w[a-zA-Z]*\w

于 2013-02-19T13:52:04.063 に答える
1

あなたはすでに解決に近づいていました。ドット (任意の文字) を空白以外のエスケープ シーケンス \S に置き換えるだけです。

@"\b\S*?ip\S*?\b"
于 2013-02-19T13:52:56.997 に答える
1

一部の単語にはハイフンが含まれている可能性があると思うので、パターンを使用することをお勧めします[\w-]*ip[\w-]*

于 2013-02-19T14:01:38.637 に答える