使用正则表达式进行ruby拆分——但在结果中保留匹配的文本
我有以下字符串:使用正则表达式进行ruby拆分——但在结果中保留匹配的文本,ruby,regex,parsing,Ruby,Regex,Parsing,我有以下字符串: 705 veliký big, great, large 707 čistý clear, clean 710 vnitřní inner, internal 我想在每个数字前插入换行符,但仍然保留数字。像这样: 705 veliký big, great, large 707 čistý clear, clean 710 vnitřní inner, internal 我在String.split(/regex/)上找到的所有内容都会丢弃匹配的模式。但在这种情况下,
705 veliký big, great, large 707 čistý clear, clean 710 vnitřní inner, internal
我想在每个数字前插入换行符,但仍然保留数字。像这样:
705 veliký big, great, large
707 čistý clear, clean
710 vnitřní inner, internal
我在String.split(/regex/)
上找到的所有内容都会丢弃匹配的模式。但在这种情况下,我想保留它
我很乐意在Ruby或Textmate中这样做,但我在每个方面都有相同的问题。匹配的图案将替换为回车符 您在这里寻找的是:
要获取带回车符的字符串,只需将上面的结果加入(“\n”)。您在这里要查找的是:
要获取带回车符的字符串,只需将上面的结果加入(“\n”)。您可以使用大括号保留拆分正则表达式的内容,如下所示:
s = '705 veliký big, great, large 707 čistý clear, clean 710 vnitřní inner, internal'
puts s.split(/(\d+)/)
(错误的)结果将是:
705
veliký big, great, large
707
cistý clear, clean
710
vnitrní inner, internal
拆分在每个数字之前和之后进行
因此,我建议先做一个gsub
:
puts s.gsub(/(\d+)/, "\n\\1")
注意强>
gsub
的结果也是一个字符串(带换行符),split
返回一个数组(不带换行符)!我的结果代码中的换行是由put
命令生成的。您可以使用大括号保留拆分正则表达式的内容,如下所示:
s = '705 veliký big, great, large 707 čistý clear, clean 710 vnitřní inner, internal'
puts s.split(/(\d+)/)
(错误的)结果将是:
705
veliký big, great, large
707
cistý clear, clean
710
vnitrní inner, internal
拆分在每个数字之前和之后进行
因此,我建议先做一个gsub
:
puts s.gsub(/(\d+)/, "\n\\1")
注意强>
gsub
的结果也是一个字符串(带换行符),split
返回一个数组(不带换行符)!我的结果代码中的换行是由puts
命令生成的。您刚才在找吗?我不明白你为什么说拆分,而你说我想在每个数字前插入换行符,但仍然保留数字。最终输出应该是什么?什么是保持模式匹配?像s.gsub(/(?=\d)/,“\n”)
之类的东西有什么问题?欢迎使用堆栈溢出。当问问题时,请花时间格式化你的问题,使其可读,并遵循正常的so外观。你在问题上付出的努力是有回报的。请读一读,你是来找我的吗?我不明白你为什么说拆分,而你说我想在每个数字前插入换行符,但仍然保留数字。最终输出应该是什么?什么是保持模式匹配?像s.gsub(/(?=\d)/,“\n”)
之类的东西有什么问题?欢迎使用堆栈溢出。当问问题时,请花时间格式化你的问题,使其可读,并遵循正常的so外观。你在问题上付出的努力是有回报的。请阅读并正确查找,但我不确定+
是什么for@pguardiario事实上,这在这里毫无意义。Thx,updated.mudasobwa--你说得对。积极的前瞻性正是我所需要的。thx.看起来不错,但我不确定+
是什么for@pguardiario事实上,这在这里毫无意义。Thx,updated.mudasobwa--你说得对。积极的前瞻性正是我所需要的。这就是我需要的。你说得对,gsub是一个更好的工作工具。这正是我需要的。你是对的,gsub是一个更好的工具。