ruby - Ruby中解析字符串然后存入数据库

标签 ruby regex string

我想为两个不同的标签解析字符串,然后将每个标签存储在数据库中。我们称这些为 tag1 和 tag2。我有一个分隔符,“?#”是 tag1 和 tag2 之间的分隔符。

假设

t = "random text blah firsttag?#secondtag more blah"

目标:tag1 应该是“firsttag”,tag2 应该是“secondtag”,没有前后随机文本。每个都应该作为对象存储在数据库中。

我试过类似的东西:

t.split

但它返回

["random text blah firsttag", "secondtag more blah"]

并包含随机文本。当它到达任一方向的第一个空间时,如何让拆分停止?

如果字符串中有多个标记对,我希望它也能工作,例如,如果:

m = "random firsttag#?secondtag blah blah 1sttag#?2ndtag blah blah blah"

我对 ruby​​ 和 rails 都很陌生,所以非常感谢你在这方面的帮助!

最佳答案

您可以将正则表达式与拆分结合使用:

tags = t.match(/\S+\?#\S+/)[0].split('?#')

解释

首先让我们捕捉文本中有趣的部分,即 tag?#tag2。我们将为此使用正则表达式:

/\S+\?#\S+/

解释:

\S+ 捕获定界符(标记)前的非空白字符

\?# 捕获分隔符标记

\S+ 捕获所有尾随的非空白字符 (tag2)

该正则表达式的匹配项(我们使用 [0] 访问的是:

firsttag?#secondtag

然后我们只使用分隔符进行拆分,然后我们得到带有标签的数组。

干杯!

PS:我重新标记了帖子,因为它与 ruby-on-rails 无关。这只是普通的 ruby

关于ruby - Ruby中解析字符串然后存入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6564632/

相关文章:

ruby-on-rails - Nokogiri gem build error failed to build gem native extension on WSL with RVM

regex - r? .在scala中的含义

java - 正则表达式在在线测试器中匹配,但在 JAVA 中不匹配

C++:为什么这个字符串输入失败而另一个没有

python - 如何让 Python 智能地将动态输入转换为固定宽度输出?

ruby - 是否可以在回形针中将附件设为可选?

ruby - 如何将这种时间格式转换为 Ruby 中的 unix 时间戳?

java - java中正负十进制值的正则表达式

python - 加入python中的字符串列表并将每个字符串用引号引起来

基于 Java/Ruby 的 IMAP 代理库