如何在没有前导逗号的情况下匹配空格?
我的用例是我想在没有前导逗号的情况下在空格上分割字符串,例如"id 10, 11"
答案 0 :(得分:1)
答案 1 :(得分:1)
不需要正则表达式,只需拆分两次:
"id 10, 11".split(",").first.split #=> ["id", "10"]
答案 2 :(得分:0)
您可以使用正则表达式
r = /(?<!,) /
其中显示“匹配一个空格前面没有空格”((?!,)
是负面的背后隐藏)。
"fe, fi, fo and fum".split r
#=> ["fe, fi, fo", "and", "fum"]
"fe, fi, fo\nand fum".split r
#=> ["fe, fi, ", "", "", "", "fo\nand", "fum"]
如果有人希望打破一个或多个前面没有逗号的空格,请使用
r = /(?<!,) +/
"fe, fi, fo\nand fum".split r
#=> ["fe, fi, ", "fo\nand", "fum"]
要拆分一个或多个前面没有逗号的空白字符,请使用
r = /(?<!,)\s+/
"fe, fi, fo\nand fum".split r
#=> ["fe, fi, ", "fo", "and", "fum"]
首先执行String#lstrip可能是谨慎的。
r = /(?<!,)\s+/
" fe, fi, fo\nand fum ".split r
#=> ["", "fe, fi, ", "fo", "and", "fum"]
" fe, fi, fo\nand fum ".lstrip.split r
#=> ["fe, fi, ", "fo", "and", "fum"]
根据要求,可以改为接受@ elyvn的建议并撰写
r = /(?<=[^,])\s+/
其中显示“匹配一个或多个前面带逗号以外的字符的空白字符”((?<=[^,])
正向后视)。
" fe, fi, fo\nand fum ".split r
#=> [" fe, fi, ", "fo", "and", "fum"]