ruby - 在 Ruby 中标记字符串的更好方法?

标签 ruby regex

我有一串任意字符。我想把它变成一个数组,其中每个字符都在一个数组元素中,除了连续的单词字符 (\w+),它们应该一起在一个数组元素中结束。示例:

ab.:u/87z

应该变成

['ab','.',':','u','/','87z']

我的第一个方法是这样的:

mystring.split(/\b/)

当然这会将非单词字符组合在一起:

['ab','.:','u','/','87','z']

我可以在后续步骤中将它们分开,但我正在寻找一种更优雅的方式。接下来我尝试了这些:

mystring.split(/(\w+|\W)/)
mystring.split(/(\b|\W)/)

两者都几乎返回了所需的结果,只是它们还返回了包含空字符串的数组元素,所以我必须写类似的东西

mystring.split(/(\b|\W)/).reject(&:empty?)

现在我的问题是:有没有更简单的方法来做到这一点?

更新:我在解释示例时犯了一个愚蠢的错误。当然 '87' 和 'z' 应该放在一起,即 '87z'。我修正了我的例子。

最佳答案

'ab.:u/87z'.scan(/\w+|./)    #=>["ab", ".", ":", "u", "/", "87z"]

我不太确定你想要什么,因为你说的是​​单词字符 (\w+) 但拆分了 87z。如果我是正确的,\w 应该匹配字母、数字和下划线。因此 “87z”

'ab.:u/87z'.scan(/[A-Za-z]+|\d+|./)    #=>["ab", ".", ":", "u", "/", "87", "z"]

你总是可以这样做来实现你在那里展示的东西

关于ruby - 在 Ruby 中标记字符串的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35202894/

相关文章:

ruby - 把这个 haml 片段变成一个帮助器来干燥 Sinatra

ruby-on-rails - 模拟用户登录 Rspec - 使用 Faraday 和 Github-Api Gems

ruby - 生成一系列字符

c# - 在 C# 中使用带有正则表达式的 Directory.GetFiles?

regex - 如果一列包含 5 列中的某些文本,Google 表格条件格式会突出显示 2 列

Java正则表达式在href标签之间提取数据

ruby - 需要一个正则表达式来匹配 'url' 标签中的 'img'

ruby-on-rails - 对多条路线使用同一个 Controller ?

javascript - 正则表达式从javascript中的字符串中删除多个逗号和空格

PHP如何像搜索引擎一样显示搜索结果