0

私は、地質学者向けの層序列を作成するプログラムに取り組んでいます。地質学者による岩石ユニットは、(1) 岩質コード (2 文字)、(2) 一次コード (1 文字)、(3) 二次コード (1 文字)、および (4) 三次コード (1 文字) の 5 つのパラメーターを使用してコード化されます。キャラクター)。したがって、ロックユニットは次のようにコーディングできます。

Ssxrs - 鋭利な基底接触を持つ根付き交差層砂岩です。

2 文字、1 文字、1、および 1 を解析するのは簡単です。

Gr-Ss --- ユニットが礫岩から砂岩まで上向きに傾斜している場合、または

Gr/Ss --- 礫岩と砂岩が入り混じる場所。

次のように、これを複数回行うことができます。

Gr-Ss/Ls --- 砂岩と石灰岩が入り混じった砂岩へと集塊が上向きに傾斜する場所。これは、岩相コードだけでなく、一次、二次、三次コードについても行われます。

5 つのコード ストリームとアクション (つまり、"/" と "-") を解析して、リソロジー リスト/配列、一次リスト/配列、二次リスト/配列、および三次リスト/配列に分解したいと考えています。

これは正規表現で解決可能な問題ですか?

4

1 に答える 1

1

正規表現:

((?:[A-Za-z]{2}[-\/])*[A-Za-z]{2})((?:[A-Za-z][-\/])*[A-Za-z])((?:[A-Za-z][-\/])*[A-Za-z])((?:[A-Za-z][-\/])*[A-Za-z])

4 つの異なるグループで 4 つの異なるコードを見つけることができます: http://rubular.com/r/Y7rlT09soH

いくつかの説明: 最初のキャプチャ グループ:

((?:[A-Za-z]{2}[-\/])*[A-Za-z]{2})

0 回以上、2 文字の後に「-」または「/」が続き、その後に 2 文字が続きます。("?:" は、キャプチャ グループがないことを示します)

次の 3 つのキャプチャ グループは同一です。

((?:[A-Za-z][-\/])*[A-Za-z])

最初のものと同じことをしますが、文字は 1 つだけです。

于 2012-12-12T15:56:32.177 に答える