1

それは機能しますが、グループ「単語」を削除しても同じ一致を取得する方法はありますか?

string targetString = "5782\tabdikace\t101\r\n5705\tAbdul\t178\r\n5293\tabeceda\t590\r\n5769\tabecední\t114\r\n5651\tÁbel\t232\r\n5750\tÁber\t133\r\n5757\tAbcházie\t126\r\n5624\tAbigail\t259"

var matches = Regex.Matches(targetString, "[0-9]+\t(?<word>[^\t]+)\t[0-9]+");
foreach (Match w in matches)
{
    wordsList.Add(w.Groups["word"].ToString());
}
4

1 に答える 1

1

これは、肯定的な後読みと先読みで行うことができます。これらは、一致にそのテキストを含めたり消費したりすることなく、ポイントの前後にパターンに一致するテキストの存在をチェックします。

あなたの表現に相当するものは

(?<=[0-9]+\t)[^\t]+(?=\t[0-9]+)

元の式と同じ結果になるとは限らないことに注意してください。以下を見てください。

Input string                       0\t one \t1\t two \t2\t three \t3
Groups in original version         11111111111         2222222222222
Groups in new version              ...11111...         ...3333333...
. = checked but not consumed                 ...22222...

loohahead および lookbehind グループは and を消費/照合せず1、そこにあることを確認するだけであるため、元の式では一致しなかっ2た値を一致させる方法を観察してください。" two "これを望むか望まないかはあなた次第です。

于 2013-11-14T16:21:41.787 に答える