0

C# を使用して、情報の文字配列を処理し、次のパターンを探します。

パイプ (0x7C)、2 ~ 7 ペアの文字、その後に別のパイプ (0x7C) が続きます。

別の言い方をすると:

|1122[33][44][55][66][77]|

文字ペアは、範囲が 33 から 124 の 10 進数 (「!」から「|」) の文字で構成されます。

ペア 3 から 7 はオプションですが、発生する場合は順番に発生するため、

    |1122| <---shortest
    |112233|
    |11223344|
    |1122334455|
    |112233445566|
    |11223344556677| <---longest

1)このパターンが文字配列に存在するかどうかを調べ、2)個々のペアを抽出したい。これらのタスクは個別に行うことができます。これに対する最善のアプローチは正規表現だと思いますが、これまでのところ、仕事を成し遂げるための式を考え出すことができませんでした。

正規表現は進むべき道ですか?正規表現自体の解決策は何ですか?

より良い方法はありますか?

チャック

4

1 に答える 1

1

私があなたの質問を正しく理解していれば、正しいパターンは次のようになります。

\|([!-|]{2}){2,7}\|

または、各セットをキャプチャします

\|([!-|]{2})([!-|]{2})([!-|]{2})?([!-|]{2})?([!-|]{2})?([!-|]{2})?([!-|]{2})?\|

範囲がそのように直接機能するかどうかわからないため[A-Za-Z!@#$......]、簡略化された範囲が機能しない場合は、実行する必要があります。

|また、残りの部分を台無しにする[!-{]可能性があるため、範囲にpipe()を含めたくないと思います。

于 2012-09-07T05:27:32.720 に答える