Ruby регулярное выражение для этой строки? - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь получить первое слово в этой строке: Basic (11/17/2011 - 12/17/2011)

Так что, в конечном счете, мы хотим получить Basic из этого.

Другой пример строки: Premium (11/22/2011 - 12/22/2011)

Формат всегда "Одно слово, за которым следует диапазон дат в скобках", и я просто хочу одно слово.

Ответы [ 7 ]

4 голосов
/ 02 апреля 2012

Используйте это:

str = "Premium (11/22/2011 - 12/22/2011)"
str.split.first # => "Premium"

Разделение использует ' ' в качестве параметра по умолчанию, если вы ничего не указали.
После этого получите первый элемент с first

2 голосов
/ 02 апреля 2012

Для этого вам не нужно регулярное выражение, вы можете просто использовать

str.split(' ')[0]
1 голос
/ 02 апреля 2012

Я знаю, что вы нашли ответ, который вам нужен, но в случае, если кто-то наткнется на это в будущем, чтобы извлечь необходимое значение из большого String неизвестной длины:

word_you_need = s.slice(/(\b[a-zA-Z]*\b \(\d+\/\d+\/\d+ - \d+\/\d+\/\d+\))/).split[0]
0 голосов
/ 02 апреля 2012

На самом деле все, что вам нужно, это:

s.split[0]

... или ...

s.split.first
0 голосов
/ 02 апреля 2012

«Одно слово, за которым следует диапазон дат в скобках»

«слово» и «диапазон дат в скобках» должны быть лучше определены
, так как, согласно вашему требованию, они должны быть якорями и / или разделителями,

Эти необработанные регулярные выражения - всего лишь общее предположение.

\w+(?=\s*\([^)]*\))

или

\w+(?=\s*\(\s*\d+(?:/\d+)*\s*-\s*\d+(?:/\d+)*\s*\))
0 голосов
/ 02 апреля 2012

Если вы действительно хотите регулярное выражение, вы можете получить первую группу после использования этого регулярного выражения:

(\w*) .*
0 голосов
/ 02 апреля 2012

Это регулярное выражение будет соответствовать первому слову без пробела

"^\w+ ??"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...