-1

年情報のみを文字列値として選択したいという内容から、以下のような内容があります。

次の入力文字列を指定します。

たとえば、主要な問題の 1 つは、オブザーバーのダイナミクスが状態フィードバック コントローラーのダイナミクスよりも高速であると想定されていることです。これにより、数値計算が困難になります (Astrom and Wittenmark、1997)。さらに、プロセスの制約がアクティブになると、ある種の非線形性が制御システムを支配するため、閉ループ制御性能の大幅な低下が明らかに見られます (Tenny、Rawlings、および Wright、2004)。したがって、上記の問題に対処できる方法を開発する必要があります。

1997と を抽出したいと思い2004ます。

ノート:

  1. 年情報は 4 桁のみ
  2. ほとんどの場合、終止符 (ピリオド) または閉じ括弧で終わります
  3. 段落内の任意の場所で発生する可能性があります
4

5 に答える 5

1
var years = Regex.Matches(input, @"\D(\d{4})\D")
    .Cast<Match>()
    .Select(m => m.Groups[1].Value)
    .ToArray();
于 2012-04-10T06:06:44.967 に答える
0

\d\d\d\d[\)\]\.]この正規表現を試してください。

)これは、または]またはで終わる 4 桁の数字をすべて検索します.

于 2012-04-10T06:07:25.130 に答える
0

正規表現を使用できます。のようなもの^[12][0-9]{3}$ があなたの年を検証します。

Match match = Regex.Match(input, "^[12][0-9]{3}$");
于 2012-04-10T06:11:22.347 に答える
0

さて、次の正規表現をお勧めします。

 ((19|20)\d{2})

また

 \b((19|20)\d{2})\b

.NET では、名前付きグループもサポートされているため、次の方法もパターンを一致させる便利な方法です。

\b(?<Years>(19|20)\d{2})\b

注: この正規表現は 4 桁を検索し、最初の 2 桁は19またはである必要があります20。それ以前の年がある場合は、それらを含めることができます

\b(?<Years>(17|18|19|20)\d{2})\b
于 2012-04-10T06:05:19.307 に答える
0

あなたの年齢はまったく制限されていますか?つまり、1900年より古いものはありませんか?それとも1800?これにより、もう少し正確になります。

Regex regex = new Regex(@" (19|20)\d\d\))") 

MatchCollection years = regex.Matches(your_input);

正規表現は、1900 年代または 2000 年代の任意の日付に一致し、前にスペースがあり、) で終わると思います。

その後、一致したすべてのインスタンスを取得して、MatchCollection を反復処理できます。

于 2012-04-10T06:06:58.970 に答える