Je suis une chaîne:Obtenir les numéros de chaîne
"1|2 3 4 oh 5 oh oh|e eewrewr|7|".
Je veux obtenir les chiffres entre les premiers tubes (|), retour "2 3 4 5".
Quelqu'un peut-il m'aider avec l'expression régulière pour le faire?
Je suis une chaîne:Obtenir les numéros de chaîne
"1|2 3 4 oh 5 oh oh|e eewrewr|7|".
Je veux obtenir les chiffres entre les premiers tubes (|), retour "2 3 4 5".
Quelqu'un peut-il m'aider avec l'expression régulière pour le faire?
Est-ce que cela fonctionne?
"1|2 3 4 oh 5 oh oh|e eewrewr|7|".split('|')[1].scan(/\d/)
... et pour obtenir des nombres, au lieu de chaînes, vous pouvez ajouter ceci: .map {| n | n.to_i} –
... et aux nombres dans une chaîne comme dans votre exemple, vous ajoutez ceci à la place: '.join ('')' – Pesto
@Nate: Que diriez-vous de '.map! {| n | n.to_i} '(Personnellement, j'aime muter plutôt que d'avoir un nouvel objet) – Swanand
si vous voulez juste utiliser ... regex
\|[\d\s\w]+\|
puis
\d
mais c'est probablement pas la meilleure solution
Arun's answer est parfait si vous ne voulez que des chiffres. dire
"1|2 3 4 oh 5 oh oh|e eewrewr|7|".split('|')[1].scan(/\d/)
# Will return ["2", "3", "4", "5"]
"1|2 3 4 oh 55 oh oh|e eewrewr|7|".split('|')[1].scan(/\d/)
# Will return ["2", "3", "4", "5", "5"]
Si vous souhaitez que les numéros à la place,
# Just adding a '+' in the regex:
"1|2 3 4 oh 55 oh oh|e eewrewr|7|".split('|')[1].scan(/\d+/)
# Will return ["2", "3", "4", "55"]
Ne pas utiliser regex quand une scission est suffisante. – Brian