heartmo
heartmo

Reputation: 582

How to parse user input with regex and make new variables out of results

The user inputs the following info into a textarea:

  Member[0] [U:1:189360279]  team = 0
  Member[1] [U:1:189331590]  team = 0
  Member[2] [U:1:52453166]  team = 0
  Member[3] [U:1:129146865]  team = 0
  Member[4] [U:1:187520208]  team = 0
  Member[5] [U:1:25945591]  team = 1
  Member[6] [U:1:188594831]  team = 1
  Member[7] [U:1:145357907]  team = 1
  Member[8] [U:1:116190211]  team = 1
  Member[9] [U:1:183457922]  team = 1

I want to extract only the long number that comes after [U:1: (i.e. 189360279), for each line, and then make an array out of all of the numbers that are extracted.

I tried some different expressions on http://www.rubular.com/ but am coming up short, I am not very familiar with regex.

Upvotes: 1

Views: 80

Answers (2)

Andie2302
Andie2302

Reputation: 4897

To extract the long number use:

(?!\[U:\d+:)(?<=:)\d+(?=\])

This matches the long number in capturing group 0.

Upvotes: 2

Alexander Kireyev
Alexander Kireyev

Reputation: 10825

It's very simple: \[U:\d:(\d+)\]. And then:

text.scan(/\[U:\d:(\d+)\]/).map { |i| i.first.to_i }

Upvotes: 3

Related Questions