我有一个像string1 = "foo-bar0164"
这样的字符串,我想在变量中存储所有字符,直到“ - ”。在这个例子中只有“foo”。
我的尝试是:
string1.match(/([^-]+)/)
但它确实匹配除了 - 。
之外的所有字符答案 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
请注意,此方法既不使用正则表达式也不创建临时数组。