我正在使用 Ruby 1.9.3,并想从这些字符串中提取“Post”和“Topic”词:
"[MediaExecsTech] New Topic Creation in Open Technology forum"
"[MediaExecsTech] New Post Creation in Open Technology forum"
有我可以使用的正则表达式吗?
我正在使用 Ruby 1.9.3,并想从这些字符串中提取“Post”和“Topic”词:
"[MediaExecsTech] New Topic Creation in Open Technology forum"
"[MediaExecsTech] New Post Creation in Open Technology forum"
有我可以使用的正则表达式吗?
有很多方法可以找到字符串是否包含“主题”或“帖子”,将其打印出来,或返回信息以进行进一步处理,或者使用一些逻辑来单独处理它们。
以下是我可能会做的一些不同的方法:
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
这些只是打印出字符串以及是否找到了“主题”或“帖子”。您可以进行进一步处理,而不是打印。
这将提取主题或帖子标题:
thestring.match(/New (Topic|Post) (.+)/)[2]
我相信我误解了你的问题。我认为您确实想要“帖子”和“主题”这两个词。在这种情况下,像 joeframbach 建议的东西应该可以工作:
thestring.match(/post|topic/i)[0]
yourstring.match(/post|topic/i)