Как обработать две возможные позиции группы в регулярном выражении в ruby? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть регулярное выражение, подобное этому (HN)(#{VAL})(#{dens})(#{temp})(C|A)#?{temp})#?(A|0)

"temp" может быть либо на 4-й позиции, либо на 7-й позиции в моем регулярном выражении. Как обработать этот шаблон в регулярных выражениях ruby?

Пример входных данных:

HN58 C 256 A T "I" 85E or HN58 C 257 A T 85 "I" E

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Все еще не уверен, что ваши данные.Но с помощью https://ruby -doc.org / core-2.6.3 / doc / regexp_rdoc.html # label-Capturing try:

regex = /HN(?<val>\d+) (C|V) (?<dens>\d+) (A|R) (T|P) (((?<temp>\d+) (85|10))|((85|10) (?<temp>\d+))) (E)/

regex =~ "HN58 C 256 A T 37 85 E"
puts val,dens,temp

regex =~ "HN58 C 257 A T 85 36 E"
puts val,dens,temp

https://rubular.com/r/vD98oRgaDGLb8W

0 голосов
/ 23 апреля 2019

Этот RegEx может помочь вам создать правильное соответствие для ваших входных строк:

HN[0-9]{2}\s[A-Z]\s[0-9]{3}\s[A-Z\s0-9]+\x22I\x22\s[A-Z0-9]+

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...