-3

オブジェクトのテキスト値を取得し、正規表現を介してそこから情報を取得し、その出力をメモ帳に入力しようとしています。以下は私のコードで、オブジェクト参照はすべて正しいです。正規表現を抽出しようとしているオブジェクトの全文など、他の情報をメモ帳に入力できたので、Match.Groups[1].Value に問題があると思いますが、わかりませんを解決する。

string pattern= @".*[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\s(A|P)M$";
string input = repo.ChangedByDate.Element.GetAttributeValueText("Text");

Match match = Regex.Match(input, pattern);

string dateRegex = match.Groups[1].Value;

Notepad.Textbox.PressKeys(dateRegex);

編集: 申し訳ありませんが、投稿が速すぎて、適切な情報がありません。

上記のコードは、元のテキストが次の文字列の日付/時刻部分のみに一致することを意図しています。

Current date and time is: 8/7/2013 12:15:02 PM

したがって、抽出したいのは8/7/2013 12:15:02 PM、に割り当てられた正規表現だけpatternです。

現時点では、メモ帳に出力が配置されていません。ただし、コードを次のように変更するとします。

string input = repo.ChangedByDate.Element.GetAttributeValueText("Text");

Notepad.Textbox.PressKeys(input);

メモ帳での私の出力はCurrent date and time is: 8/7/2013 12:15:02 PM

4

3 に答える 3

2

これはあなたのためにそれを行います:

.*([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\s[AP]M)$

最初に、結果全体が必要なため、正規表現全体をグループ化する必要がありましたGroups[1][AP]M2 番目に、正規表現の最後にこれが必要でした。

それを証明するRubular を次に示します。

于 2013-08-07T17:01:30.437 に答える
2

.*正規表現の は、文字列の先頭と一致します。それを完全に除外して、グループ 0 (正規表現に一致するすべてのコンテンツ) を取得できます。グループにアクセスする前に、成功を確認する必要があることに注意してください。

string pattern= @"[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\s[AP]M";

Match match = Regex.Match(input, pattern);

if (match.Success)
{
  string dateRegex = match.Groups[0].Value;
  Notepad.Textbox.PressKeys(dateRegex);
}
于 2013-08-07T16:56:17.883 に答える
2

Groups[0]一致全体が含まれます (正規表現で指定された文字列全体の可能性があります)。

Groups[1]最初のグループ化が含まれます (この場合、使用したため、「A」または「P」())

これが表示されているものと一致しない場合は、入力文字列がなく、さらに重要なことに、Match生成しているオブジェクトのステータスを確認できないため、詳細を提供する必要があります。

于 2013-08-07T16:07:02.100 に答える