2015-01-17 2 views
1

У меня есть эта простая маленькая строка «ср 09 сента», и я хотел бы, чтобы выбрать «09 Sept»Как выбрать все после 1-го пространства регулярного выражения

Это займет все с 1-го места:

\ s (. *) (как от Regex to get everything after the first space)

Но это приходит с пространством, и я хотел бы избавиться от этого

ответ

3

Получить первую группу захвата этого регулярного выражения:

"Wed 09 Sept" =~ /\s(.*)/ 
selection  = $1 
# => "09 Sept" 

=~ Оператор сопоставляет шаблон с строкой. Переменные $1, $2, $3 и т. Д. Относятся к группам захвата.

+0

Спасибо. Я не уверен, что такое группа захвата или как ее реализовать. –

+0

Это уже в регулярном выражении, которое вы опубликовали. Дополнительная информация: http://www.regular-expressions.info/brackets.html – August

+0

Это то, что я ищу, я думаю. Что это за знак «= ~»? Кроме того, знак $ является глобальной переменной? Что происходит в этом коде? –

0

Вы можете использовать \K для удаления ранее согласованных символов.

^\S*\s\K.* 

ИЛИ

^\S* \K.* 

ИЛИ

\s\K.* 

ИЛИ

\K.* 

\S* соответствует нулю или более символов без пробелов и \s+ матчи один или несколько пробелов. \K отбрасывает ранее согласованные символы, которые печатаются в финале. Теперь .* будет соответствовать всем остальным символам. Это будет напечатано в финале.

DEMO 1DEMO 2

0

Группа первое место и остальные /(\s)(.*)/, как:

pry(main)> m = /(?'first'\s)(?'rest'.*)/.match 'Wed 09 Sept' 
=> #<MatchData " 09 Sept" first:" " rest:"09 Sept"> 
pry(main)> m[:rest] 
=> "09 Sept"