iwan
iwan

Reputation: 7569

Split specific string by regular expression

i am trying to get an array that contain of aaaaa,bbbbb,ccccc as split output below.

a_string = "aaaaa[x]bbbbb,ccccc";
split_output a_string.split.split(%r{[,|........]+})

what supposed i put as replacement of ........ ?

Upvotes: 1

Views: 174

Answers (2)

Phrogz
Phrogz

Reputation: 303520

No need for a regex when it's just a literal:

irb(main):001:0> a_string = "aaaaa[x]bbbbb"
irb(main):002:0> a_string.split "[x]"
=> ["aaaaa", "bbbbb"]

If you want to split by "open bracket...anything...close bracket" then:

irb(main):003:0> a_string.split /\[.+?\]/
=> ["aaaaa", "bbbbb"]

Edit: I'm still not sure what your criteria is, but let's guess that what you are really doing is looking for runs of 2-or-more of the same character:

irb(main):001:0> a_string = "aaaaa[x]bbbbb,ccccc"
=> "aaaaa[x]bbbbb,ccccc"
irb(main):002:0> a_string.scan(/((.)\2+)/).map(&:first)
=> ["aaaaa", "bbbbb", "ccccc"]

Edit 2: If you want to split by either the of the literal strings "," or "[x]" then:

irb(main):003:0> a_string.split /,|\[x\]/
=> ["aaaaa", "bbbbb", "ccccc"]

The | part of the regular expression allows expressions on either side to match, and the backslashes are needed since otherwise the characters [ and ] have special meaning. (If you tried to split by /,|[x]/ then it would split on either a comma or an x character.)

Upvotes: 2

zellio
zellio

Reputation: 32524

no regex needed, just use "[x]"

Upvotes: 1

Related Questions