C#で作成されたDataminingプロジェクトを引き継ぎ、有用なデータをデータベースに格納するためにいくつかの生のテキストファイルを解析しています。文字列と一致しない、奇妙な正規表現の構文
今のところ問題はありませんが、すべての機能が動作していますが、正規表現の構文に誤解があります。
は実際には、なぜ
Déposé et enregistré le 16/09/2016
は、私は正規表現は私の文字列に一致するようにDéposé et enregistré le ([0-9]{2}\/[0-9]{2}\/[0-9]{4})
のようになることが予想文字列のマッチング表現Déposé et enregistré le (?<Registred>.+?)\s*(\r\n)
です。
私が迷子になる問題は、私の意見では16/09/2016
のように一致してはならない(?<Registred>.+?)
部分です。ここで
は、文字列に一致するコードのサンプルです:
var results = new List<RegexResult>();
String regexS = r.RegexValue;
try
{
var regex = new System.Text.RegularExpressions.Regex(regexS, RegexOptions.None, new TimeSpan(TimeSpan.TicksPerSecond * 3));
var matchCollection = regex.Matches(data.Data);
if (matchCollection.Count > 0)
{
int occurenceCounter = 0;
foreach (Match match in matchCollection)
{
string[] capturedGroup = regex.GetGroupNames();
foreach (string groupName in capturedGroup)
{
string resultValue = match.Groups[groupName].Value.Trim();
if (groupName != "0")
{
results.Add(new RegexResult(data.Id, r, resultValue, groupName, occurenceCounter));
}
log.Info("RawData Id : {0} | Regex Id : {1} | groupName {2} : {3}", data.Id, r.Id, groupName, resultValue);
}
occurenceCounter++;
}
}
}
catch (RegexMatchTimeoutException e)
{
log.Error("RegexMatchTimeoutException for Id {0} and regex {1}", data, regexS, e);
}
return results;
任意のアイデア?
実際には、 '\ r \ n 'のために日付の後に改行がある場合にのみ一致します。このドットは改行以外の任意のcharにマッチします。 '+?'は1回以上の出現にマッチしますが、可能な限り出現しません。あなたは正規表現の説明を求めていますか? –
参考にしていただきありがとうございます。私はそれを私のお気に入りに追加したので、私はこの種のトピックを再現しません。私の質問に答える@ dan1111の答えを見てください。 – MadJlzz
さて、ダンはhttp://regex101.comを複製しました。 –