2013-03-23 2 views

ответ

-1
yourstring.match(/post|topic/i) 
+0

возвращает «# ». Я хочу только вернуть «Тема» любую помощь. Спасибо – Kashiftufail

+0

это работает для меня mystring.match (/ post | topic/i) [0] – Kashiftufail

+5

Вы должны объяснить, как это работает. Не давайте им рыбу, научите их ловить рыбу. Кроме того, это не достаточно плотный шаблон: он также соответствует «почтовым», «загородным», «атопическим», «актуальным». –

1

Это извлечет тему или сообщение название:

thestring.match(/New (Topic|Post) (.+)/)[2] 

Я считаю, я понял ваш вопрос. Полагаю, вы буквально хотите слова «пост» и «тема». В этом случае что-то вроде того, что joeframbach предложил должно работать:

thestring.match(/post|topic/i)[0] 
+0

Он возвращает все исправляющие строки, а не слова «post» и «topic» – Kashiftufail

2

Есть много способов, вы можете найти ли содержать строки «Тема» или «Пост», печать, что из, или возврата информации для дальнейшей обработки или использования некоторой логики для их обработки по отдельности.

Вот некоторые различные способы, я мог бы сделать это:

REGEX = /\b(#{ Regexp.union(%w[Topic Post]) })\b/ 
=> /\b((?-mix:Topic|Post))\b/ 

ARRAY = [ 
    "[MediaExecsTech] New Topic Creation in Open Technology forum", 
    "[MediaExecsTech] New Post Creation in Open Technology forum" 
] 

ARRAY.each do |s| 
    puts s[REGEX, 1] 
end 
=> Topic 
=> Post 

Это просто печатает слово найдено.

ARRAY.map { |s| 
    s[REGEX, 1] 
} 
=> [ 
    [0] "Topic", 
    [1] "Post" 
    ] 

Это возвращает массив для каждой искомой строки. Если слова не отображаются, элемент массива будет nil.

ARRAY.each do |s| 
    case s[REGEX, 1] 
    when 'Topic' 
    puts "#{ s } contains Topic" 
    when 'Post' 
    puts "#{ s } contains Post" 
    end 

    case s 
    when /\bTopic\b/i 
    puts "#{ s } contains Topic" 
    when /\bPost\b/i 
    puts "#{ s } contains Post" 
    end 
end 
=> [MediaExecsTech] New Topic Creation in Open Technology forum contains Topic 
=> [MediaExecsTech] New Topic Creation in Open Technology forum contains Topic 
=> [MediaExecsTech] New Post Creation in Open Technology forum contains Post 
=> [MediaExecsTech] New Post Creation in Open Technology forum contains Post 

Они просто распечатывают строку и были ли найдены «Тема» или «Почта». Вместо печати вы можете продолжить обработку.

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