Ger*_*Cas 1 ruby regex replace
我试图得到一个正则表达式来匹配第一个和第二个空格和":"来自第二列字符串,如下所示,以便用"|"替换它们.我在下面建立了正则表达式,但匹配相反,因为匹配任何单词,而不是第一和第二空格,也不是":".也许有人可以伸出援助之手.
(\S+\s*) (\S+\s*) (\S+\s*) # My current regex
Run Code Online (Sandbox Code Playgroud)
字符串就像这些.
Usw 12:12 Desktop
Usw 1:2 Netbooks
Usw 1:345 Servers, mainframes and supercomputers
Run Code Online (Sandbox Code Playgroud)
我想把这些字符串从上面转换成这个
Usw|12|12|Desktop
Usw|1|2|Netbooks
Usw|1|345|Servers, mainframes and supercomputers
Run Code Online (Sandbox Code Playgroud)
我们可以gsub在这里使用:
input = String.new("Usw 1:345 Servers, mainframes and supercomputers")
puts input.gsub(/(\S+)\s*(\d+):(\d+)\s*(.*)/, '\1|\2|\3|\4')
Usw|1|345|Servers, mainframes and supercomputers
Run Code Online (Sandbox Code Playgroud)
这里的基本思想是我们在第一个空格之前,第一个空格之后捕获非空间内容,在第二个空格之后捕获字符串的其余部分.然后我们使用这些捕获组构建您想要的输出字符串.
我相信解决方案可能更简单:
'Usw 12:12 Desktop'.split(/\s|:/, 4).join('|')
#? "Usw|12|12|Desktop"
Run Code Online (Sandbox Code Playgroud)
如果第一列有冒号,上面的内容将失败,但我很确定情况并非如此.