0

C#では、括弧内の整数で始まり、その後にこれらの文字「PLA」括弧が続く一致が発生する場所を検索し、次のセットに到達するまでこれを「一致」させます(メモリに読み込みます)。

したがって、サンプルコードは次のようになります

(1965
    ("PLA")
    ("GEN_ANGLE")
    ("Line to line angle")
    (
        ("clinesegs" 3565.01 1265.99 "SURFACE")
        ("clinesegs" 3618.02 1255.00 "SURFACE")
    )
    ((3586.02 1267.20 "SURFACE"))
    (120.000)
    (90.000)
)
(1966
    ("PLA")
    ("GEN_ANGLE")
    ("Line to line angle")
    (
        ("clinesegs" 3831.98 1255.00 "SURFACE")
        ("clinesegs" 3882.92 1268.07 "SURFACE")
    )
    ((3863.98 1267.20 "SURFACE"))
    (120.000)
    (90.000)
)

データを「照合」し、「1965」が探しているIDであることを知っていることに基づいて、このデータのみを取得したい.

(1965
    ("PLA")
    ("GEN_ANGLE")
    ("Line to line angle")
    (
        ("clinesegs" 3565.01 1265.99 "SURFACE")
        ("clinesegs" 3618.02 1255.00 "SURFACE")
    )
    ((3586.02 1267.20 "SURFACE"))
    (120.000)
    (90.000)
)

「(1965」は次のように検索できます。

(\(1965)  

.. または (前に (ADD) を付けて):

[(](ADD){1}\r\n\r\n\t\s[(][0-9]{4,}\r\n\r\n\t\s\s(\("){1}[a-zA-Z]{1,}("\)){1}

..しかし、これらのタイプの正規表現を実際に機能させることはできないようです。スペーシングと改行である必要があります
。エンドPLAの一致を理解し、次のデータセットが始まる前にエンディングを「検出」することに固執しています)(1966 ("PLA")これは、試合の終了を検出するために試合で使用するものですが、調査結果には含めません。

4

3 に答える 3

0

(1966 ("PLA")データ内で発生しないが続くことがわかっている場合は、次のようなものを使用できます。

(?xs)                     # ignore spaces, comments and make . match \n
\(1965\s+\("PLA"\)
.*?                       # ungreedy
(?=\(1966\s+\("PLA"\)|$)  # lookahead does not include this in the match

次のように C# で引用できます。

var re = @"(?xs)               # ignore spaces, comments and make . match \n
    \(1965\s+\(""PLA""\)
    .*?                        # ungreedy
    (?=\(1966\s+\(""PLA""\)|$) # lookahead does not include this in the match
    ";
于 2013-04-20T04:47:26.850 に答える
0

これは私が思いついたものです:

EDIT : N 個の "clineseg" を考慮して式を修正し、"Line to line angle" グループの前後の任意の数のグループで動作します。

\([\d]+[\s]+\("PLA"\)([\s]+\(.+)+[\s]+\(([\s]+\(.+)+[\s]+\)([\s]+\(.+\))+[\s]+\)

から(1965クロージングまでを収録)

于 2013-04-20T04:49:20.297 に答える
0

このパターンを試してください: このパターンでは 1965 年の ID を使用してください

(?=\(1965)(?=.*\(\"PLA\"\).*)\(((([^)])*\([^)]+\)[^)]*)\))*\)*[^\)]*\)

RegexOptions.SingleLine を使用

于 2013-04-20T05:14:46.683 に答える