2017-12-11 1 views
-3
I 예 C7 [2H] 5NaO2 들면 화학식로 서브 및 SUP 태그로 대체하고, 그 결과로서 싶어

: 태그 내부루비 정규식 첨자/첨자

C<sub>7</sub>[<sup>2</sup>H]<sub>5</sub>NaO<sub>2</sub> 

숫자를 두 자리 숫자가 될 수 있습니다. 지금까지는/(\ d +) /가 모든 숫자와 일치하며/[(\ d +) /] 다음의 숫자와 일치한다는 것을 알고 있습니다. 그러나이 두 가지를 결합하는 방법을 모르겠습니다. 미리 감사드립니다.

+2

마 당신이 다른 샘플을 가지고 있다면, 나는이 단일 샘플에 주어진 어떤 솔루션이 한번 다른 공식에 적용하려고 시도하면 실패 할까 봐 걱정합니다. – ctwheels

+0

이것은 일반적인 것으로 생각하면 아마도 생각보다 더 복잡한 문제입니다. 화학 공식에는 문법이 거의 없습니다. 아마도 Parslet이나 TreeTop과 같은 문법 파서를 사용해야 할 것입니다. –

+0

Ruby는 [''] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby)에서와 같이 프로그래밍 언어 또는 Ruby와 동일합니까? – tadman

답변

0

두 단계로 나누어서 설명하겠습니다.

먼저 문자가있는 숫자 앞에 sup 태그로 묶인 동일한 숫자를 입력하십시오.

경기 : (?<=[A-Z])\d+

교체 : <sup>\0</sup>

그런 다음 결과를 가지고 sub 태그로 둘러싸인 같은 숫자로 [ 앞에 자리 대체 :

경기 : (?<=\[)\d+

것은 교체를 : <sub>\0</sub>

+0

답을 수정 한 후에 고맙습니다. 'C7 [2H] 5NaO2'.gsub (/ (? <= [AZ | \]]) \ d + /' \ 0 ') .gsub (/ (? <= \ [) \ d + /, '\ 0')'작동했습니다. –