正規表現の疑問符の4つの使い方の詳細

1119 ワード

テキスト記号
だって?正規表現には特別な意味があるので、一致したい場合は?自分は、エスケープする必要があります.
助数詞の有無
疑問符は、前の内容を繰り返す0回または1回、すなわち現れないか、現れないかを表すことができる.
非貪欲マッチング
欲張りマッチング
一致を満たす場合は、できるだけ長い文字列を一致させ、デフォルトでは貪欲な一致を採用します.

string pattern1 = @"a.*c";  // greedy match 
Regex regex = new Regex(pattern1);
regex.Match("abcabc"); // return "abcabc"

非貪欲マッチング
一致を満たす場合、できるだけ短い文字列を一致させ、使用しますか?非貪欲なマッチングを表す

string pattern1 = @"a.*?c";  // non-greedy match 
Regex regex = new Regex(pattern1);
regex.Match("abcabc"); // return "abc"

いくつかのよく使われる非貪欲なマッチングPattern
*? 何度も繰り返しますが、できるだけ繰り返し+を少なくしますか?1回以上繰り返すが、できるだけ繰り返さない??0回か1回繰り返しますが、できるだけ{n,m}?nからm回繰り返しますが、できるだけ{n,}?n回以上繰り返しますが、できるだけ繰り返さないでください.
スナップしないモード
カッコの取得能力をオフにするにはどうすればいいですか?それをグループ化するだけで、左かっこの後ろに「?」を付ける方法があります.ここで、最初の丸括弧はパケット化にのみ使用され、取得変数を占有しないため、$1の内容はsteakまたはburgerのみであり、brontoは永遠に不可能である.

while(<>){
  if(/(?:bronto)(steak|burger)/){
    print "Fred wants a $1
" ; } }