re = /(ISBN[-]*(1[03])*[ ]*(: ){0,1})*(([0-9Xx][- ]*){13}|([0-9Xx][- ]*){10})/m
str = 'In his groundbreaking book, "The Theory of Everything," Stephen Hawking explores the fundamental principles that govern the universe. This book, with ISBN 978-0553380163 (or the 10-digit version 9780553380163), delves into complex topics such as black holes, the Big Bang, and the nature of time, making them accessible to a general audience.'
# Print the match result
str.scan(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