re = /^ # начало строки
(?:
([a-z]) | # 1 гр
([A-Z]) | # 2 гр
([0-9]) # 3 гр
)
(?(1) # если совпала 1 гр
[a-z]*+ # захватываем все символы как в 1 гр
(?:
([A-Z]) | # 4 гр
([0-9]) # 5 гр
)
(?(4) # если совпала 4 гр
[a-zA-Z]*+ # захватываем все символы как в 1 и 4 гр
[0-9]
[a-zA-Z0-9]*+
$ # закрыли весь поиск
| # иначе если совпала 4 гр
(?(5) # если совпала 5 гр
[a-z0-9]*+ #захватываем все символы как в 1 и 5 гр
[A-Z]
[a-zA-Z0-9]*+
$
| # иначе если совпала 5 гр
(?!) # роняем матчинг
) # конец если совпала 5 гр
) # конец если совпала 4 гр
) # конец если совпала 1 гр
(?(2) # если совпала 2 гр
[A-Z]*+ # захватываем все символы как в 2 гр
(?:
([a-z]) | # 6 гр
([0-9]) # 7 гр
)
(?(6) # если совпала 6 гр
[a-zA-Z]*+ # захватываем все символы как в 2 и 6 гр
[0-9]
[a-zA-Z0-9]*+
$ # закрыли весь поиск
| # иначе если совпала 6 гр
(?(7) # если совпала 7 гр
[A-Z0-9]*+ #захватываем все символы как в 2 и 7 гр
[a-z]
[a-zA-Z0-9]*+
$
| # иначе если совпала 7 гр
(?!) # роняем матчинг
) # конец если совпала 7 гр
) # конец если совпала 6 гр
) # конец если совпала 2 гр
(?(3) # если совпала 3 гр
[0-9]*+ # захватываем все символы как в 3 гр
(?:
([A-Z]) | # 8 гр
([a-z]) # 9 гр
)
(?(8) # если совпала 8 гр
[0-9A-Z]*+ # захватываем все символы как в 3 и 8 гр
[a-z]
[a-zA-Z0-9]*+
$ # закрыли весь поиск
| # иначе если совпала 8 гр
(?(9) # если совпала 9 гр
[0-9a-z]*+ #захватываем все символы как в 3 и 9 гр
[A-Z]
[a-zA-Z0-9]*+
$
| # иначе если совпала 5 гр
(?!) # роняем матчинг
) # конец если совпала 5 гр
) # конец если совпала 8 гр
) # конец если совпала 3 гр/x
str = 'AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8AaluhfDnaoufbicbIHBDIHBKJXNdCJKfBCNCNX5BCHBAHIBAVIsdniuhuygvD6w489bgtvdihfcbsigdbcsihcgfisyg8'
# Print the match result
str.match(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html