DATA.each do |l|
chars = l[/^([[:alpha:]]+)/, 1] # [:alpha:] = [a-zA-Z]
puts chars
end
__END__
abc123
abcd23423
# >> abc
# >> abcd
Если вы хотите захватить альфа в массив, сделайте что-то вроде этого:
ary = []
DATA.each do |l|
ary << l[/^([[:alpha:]]+)/, 1] # [:alpha:] = [a-zA-Z]
end
ary # => ["abc", "abcd"]
__END__
abc123
abcd23423
Я не использовал \D
, потому что это означает все нечисловые (AKA [^0-9]
), но это может быть опасно, если вы собираетесь столкнуться с любым другим текстом, который не является буквенным символом:
'abc_-$%#123'[/^(\D+)/, 1] # => "abc_-$%#"
По той же причине \w
не обязательно безопасен:
'abc_-$%#123'[/^(\w+)/, 1] # => "abc_"
[[:alpha:]]
это буквы алфавита [a-zA-Z]
'abc_-$%#123'[/^([a-zA-Z]+)/, 1] # => "abc"
'abc_-$%#123'[/^([[:alpha:]]+)/, 1] # => "abc"