Ruby字符串匹配直到“ - ”

时间:2018-03-26 11:06:23

标签: ruby regex

我有一个像string1 = "foo-bar0164"这样的字符串,我想在变量中存储所有字符,直到“ - ”。在这个例子中只有“foo”。

我的尝试是:

string1.match(/([^-]+)/)

但它确实匹配除了 - 。

之外的所有字符

6 个答案:

答案 0 :(得分:2)

具有积极前瞻性的东西:

string1[/\A.*?(?=-)/] #=> "foo"

答案 1 :(得分:2)

这种直截了当的方式:

{{1}}

答案 2 :(得分:1)

试试这个

string1.match(/(.*)-/).captures
=> ["foo"]

string1.match(/(.*)-/) { $1 }
=> "foo"

答案 3 :(得分:1)

您可以尝试匹配/([^-]+)-/。这将确保匹配以第一个-字符结束。

答案 4 :(得分:0)

此正则表达式将匹配模式[ - ]

^([\w]*)-([\w\d]*)$

使用()你不能得到匹配组1和2以及之后的字母。

更快更常见的解决方案是string.split("-")[0] - 你会将其第一部分视为String - 但要注意NullPointers(长度应> 1或至少为emptystring)

我想查看我的正则表达式here

答案 5 :(得分:0)

如果知道该字符串包含连字符

str = "1234-567"
str[0,str.index('-)]
  #=> "1234"

如果不是

str_len = str.index('-)
str_len ? str[0,str_len] : nil

请注意,此方法既不使用正则表达式也不创建临时数组。