0

ある種の URL 部分を解析して変換する必要があります。これを行う方法は次のとおりです。

Regex s_re = new Regex(@"^/(lang_([^/]*)/)?([^/]*)([^\?]*)\??(.*)$", RegexOptions.IgnoreCase);

const string Url = "...";

MatchCollection matches = s_re.Matches(Url);
if(matches.Count==0) return false;//can't find matches

string strLang = s_re.Replace(Url, @"$2");
string strAddr = s_re.Replace(Url, @"$3");

この場合、私の URL は 3 回 (元の一致とそれぞれの置換) 解析されることを正しく理解していますか? そして、最良のケースでは、一度だけ解析し、結果を使用する必要があります。

「Replace」の呼び出しに従う代わりに、何か他のものを使用する必要があると思われますが、正確に何を見つけることができません。

アドバイスいただけますか?

ありがとう。

4

1 に答える 1

1

次のようにする必要があります。

Match match = regexData.Match(line);
if (!match.Success) return false;
string val1 = match.Groups[0].Value;
string val2 = match.Groups[1].Value;

また、おそらくその RegexOptions.IgnoreCase で RegexOptions.CultureInvariant を使用することをお勧めします。それ以外の場合は、Unicode ではなくローカル カルチャの大文字と小文字の規則を使用するためです。msdn の詳細

于 2012-05-16T02:33:36.297 に答える