2017-09-26 3 views
-3

化学式中の水素原子の数を特定するのに、どの表現を使用しますか?例えばregexpを使用して化学式の水素数を特定するにはどうすればよいですか?

C40H51N11O19 - 51水素

C2HO - 1水素

CO2 - ない水素(空)

任意の提案?

ありがとうございます!

乾杯!

follwowing桁とHと一致します
+1

あなたはより多くを必要とするとあなたが言ってあなたの結果を処理する必要が

これを行う正規表現だけですが、どの言語を使用していますか? –

+0

あなたはエチルエーテルのためにどんな結果を望んでいますか? "C2H50C2H5" – Yunnosch

+0

あなたが受け入れる答えが何であれ、水銀で何か結果を確認してください。 – Yunnosch

答えて

0

あなたは、この正規表現を使用して起動することができます。

H \ dは*

H - >試合literaly Hのcaracter 日間* - Nの時間>試合0桁

exempleを見て、自分で別の正規表現を試してみましょう: https://regex101.com/r/vdvH8S/2

正規表現はあなたのために変換されません。結果、正規表現のみルックアップを行います。番号付き

  • H:
  • 番号を抽出のみH:1
  • マッチしない:0
+0

たとえば水銀またはカリウムである。 – Yunnosch

+0

私はOPのすべてのケースをカバーします – baddger964

0

A正規表現式は次のようになります。

/H(\d+)/g 
  • 'H' は
  • ()が宣言所与の化学においてHにリテラルcharecter一致 式ですキャプチャグループであるため、使用しているプログラミング言語にかかわらずHなしでキャプチャされたグループを取得します。
  • \ dは、1以上に一致する+修飾子とともに任意の数字に一致します。

ここではすべてのシナリオをキャッチすることはありませんが、正規表現以外のものを使用するのが最適かもしれません。

+0

すべてがキャッチはありません、私は同意します。これはOPがサンプル入力として与えたすべてのケースを取得することさえできません。例えば。 "C2HO" – Yunnosch

+0

@ Yunnosch私はsomethying elseを使うことを提案したのですが、私はこれを完全に同意しますが、これをOPの最初の答えとして追加しました。 –

+0

そして、数字と要素の両方の名前を考慮するために、 '([A-Z] [a-z] *)(\ d + *)'のようなものかもしれません。 –

関連する問題