正規表現の疑問符の4つの使い方の詳細
1119 ワード
テキスト記号
だって?正規表現には特別な意味があるので、一致したい場合は?自分は、エスケープする必要があります.
助数詞の有無
疑問符は、前の内容を繰り返す0回または1回、すなわち現れないか、現れないかを表すことができる.
非貪欲マッチング
欲張りマッチング
一致を満たす場合は、できるだけ長い文字列を一致させ、デフォルトでは貪欲な一致を採用します.
非貪欲マッチング
一致を満たす場合、できるだけ短い文字列を一致させ、使用しますか?非貪欲なマッチングを表す
いくつかのよく使われる非貪欲なマッチングPattern
*? 何度も繰り返しますが、できるだけ繰り返し+を少なくしますか?1回以上繰り返すが、できるだけ繰り返さない??0回か1回繰り返しますが、できるだけ{n,m}?nからm回繰り返しますが、できるだけ{n,}?n回以上繰り返しますが、できるだけ繰り返さないでください.
スナップしないモード
カッコの取得能力をオフにするにはどうすればいいですか?それをグループ化するだけで、左かっこの後ろに「?」を付ける方法があります.ここで、最初の丸括弧はパケット化にのみ使用され、取得変数を占有しないため、$1の内容はsteakまたはburgerのみであり、brontoは永遠に不可能である.
だって?正規表現には特別な意味があるので、一致したい場合は?自分は、エスケープする必要があります.
助数詞の有無
疑問符は、前の内容を繰り返す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
" ;
}
}