インストールレスプログラミング( ´ー`)

VBA , JavaScript , HTAなど 365アプリはインストール必要ですが、仕事に無いケースはほぼないから(・_・;)

化学反応式分解試し中(2)

この夏頃からゲームにあんまり興味がなくなり,その代わりWeb小説にはまって読みふけるのに時間を取られています。

いつもはその誘惑に負けることが多いんですが,今日はすこし正規表現に引っ張られてやってみています。

サブマッチというのを完全に誤解していることがよーくわかったので,とにかく正規表現のパターンをいじってみる。

うまく行きません(;´▽`A``

Sub 正規表現()

    Dim RegObj As RegExp: Set RegObj = New RegExp
    Dim MatchObj As MatchCollection, 化学反応式 As String
    化学反応式 = "C3H8+5O2→3CO2+4H2O"
    
    With RegObj
        .Global = True  '複数マッチ 大事!
        .Pattern = "\+|→|([1-9]*)(([A-Z][a-z]?)([1-9]*))*"
        Set MatchObj = .Execute(化学反応式)
    End With
    Stop

End Sub


こうしてみて,

f:id:chemiphys:20181001230719p:plain

きちんとばらけていってくれますね。

そして,係数と各元素と添え字部分をSubmatchesに収納できたら望みどおりなんですが,

f:id:chemiphys:20181001231139p:plain

そううまくはいってくれない。
Item1に入っているのは係数だと思うので,これは空文字列になるのは納得。たぶん想定通り
C3がどこかに行ってしまう。

他も,それぞれの物質の最後の部分しか収納してくれない。

むーん

(´・ω・)
また暇を見つけて考えよう。。

むずいなぁ