Как использовать регулярное выражение для определения количества водородов в химической формуле?

Какое выражение я должен использовать, чтобы определить количество атомов водорода в химической формуле?

Например:

C40H51N11O19 - 51 водород

C2HO - 1 водород

CO2 - без водорода (пустой)

Какие-либо предложения?

Спасибо!

Ура!

2 ответа

Решение

Вы можете начать использовать это регулярное выражение:

Н \ д *

H -> соответствует буквально символ H d* -> соответствует 0 до N раз цифра

посмотрите пример и попробуйте другое регулярное выражение по адресу: https://regex101.com/r/vdvH8S/2

Но регулярное выражение не будет конвертировать для вас результат, регулярное выражение только поиск.

Вам нужно обработать свой результат, сказав:

  • H с номером: извлечь номер
  • только H: 1
  • нет совпадений: 0

Выражение Regex, которое будет соответствовать H с следующими цифрами:

/H(\d+)/g
  • "H" - буквальное совпадение символа с H в данной химической формуле
  • () объявляет группу захвата, поэтому вы можете затем захватить захваченную группу без H на любом языке программирования, который вы используете
  • \ d будет соответствовать любой цифре вместе с модификатором +, который соответствует 1 или более

Здесь нет улова всех сценариев, вам лучше всего использовать что-то кроме регулярных выражений.

Другие вопросы по тегам