我试过了
puts [regexp "(\[0-9]{1,3})\.(\[0-9]{1,3})\.(\[0-9]{1,3})\.(\[0-9]{1,3})" 192.168.1.10]
Run Code Online (Sandbox Code Playgroud)
答案是1。
但是如果我用
puts [regexp "(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})" 192.168.1.10]
Run Code Online (Sandbox Code Playgroud)
(替换\[0-9]为\d)答案为0。
有人可以告诉我为什么吗?
您应该逃避的反斜线\d 如\\d用双引号使用时。
puts [regexp "(\\d{1,3})\.(\\d{1,3})\.(\\d{1,3})\.(\\d{1,3})" 192.168.1.10]
Run Code Online (Sandbox Code Playgroud)
或者,您必须使用大括号。
puts [regexp {(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})} 192.168.1.10]
Run Code Online (Sandbox Code Playgroud)
注意:使用花括号时,不会发生变量替换。