2009-12-02 2 views
0

Используя рубиновое регулярное выражение, как мне совместить все слова в списке, разделенном на комы, но совпадают только в том случае, если слово целых содержит действительные символы слова (то есть: номер букв или подчеркивание). Например, учитывая строку:Как сопоставить действительные слова с регулярным выражением ruby ​​

"! Видеть, джейн, бежать, г # ип, J @ пе, г п"

Я хотел бы, чтобы соответствовать слова

'видеть', '' и Джейн 'бежать',

, но не слова

'r # un', 'j @ ne' или 'r1n'.

Я не хочу соответствовать коме ... только сами слова.

Я начал регулярное выражение здесь: http://rubular.com/regexes/12126

+0

Есть ли причина, по которой вы не можете разбить строку в массив на запятые, а затем запустить каждый элемент через регулярное выражение, которое у вас уже есть, и посмотрите, верните ли вы 1 результат? Все, что содержит символы, отличные от слов, возвратит несколько результатов. – Jack

+0

Я использую регулярное выражение как часть маршрута. Я не думаю, что сначала разделение на массив - это вариант. – rswolff

ответ

6
s="see, jane, run, r#un, [email protected], r!n, fast" 
s.scan(/(?:\A|,\s*)(\w+)(?=,|\Z)/).flatten 
# => ["see", "jane", "run", "fast"] 
+0

круто, не видел?: Или? = До – klochner

Смежные вопросы