cud任何身体告诉我这个表达是如何运作的
output = "#{output.gsub(/grep .*$/,'')}"
在ouptput的操作值之前
"df -h | grep /mnt/nand\r\n/dev/mtdblock4 248.5M 130.7M 117.8M 53% /mnt/nand\r\n"
但是在操作之后它来了
"df -h | \n/dev/mtdblock4 248.5M 248.5M 130.7M 117.8M 53% /mnt/nand\r\n "
plzz帮帮我
答案 0 :(得分:2)
你的表达相当于:
output.gsub!(/grep .*$/,'')
更容易阅读。
。在正则表达式中默认匹配除换行符之外的所有字符。因此,在提供的字符串中,它匹配“grep / mnt / nand”,并将替换空字符串。结果是提供的字符串,没有匹配的子字符串。
这是一个更简单的例子:
"hello\n\n\nworld".gsub(/hello.*$/,'') => "\n\n\nworld"
在你提供的正则表达式和上面的例子中,$都没有必要。它被用作匹配行尾的锚点,但由于它前面的模式(。*)匹配到换行符之前的所有内容,因此它是多余的(但不会造成伤害)。
答案 1 :(得分:0)
由于gsub返回一个字符串,因此第一行与
完全相同output = output.gsub(/grep .*$/, '')
获取字符串并删除正则表达式的任何出现
/grep .*$/
即。字符串的所有部分以'grep'开头,直到字符串结尾或换行符。
答案 2 :(得分:0)
有一个很好的正则表达式测试/参考here。这个匹配单词“grep”,然后是空格,然后匹配任意数量的字符,直到下一个换行符(\ r或\ n)。 “”本身意味着任何字符,而“。*”在一起意味着任意数量的字符。 “$”表示一行的结尾。
答案 3 :(得分:0)
对于'$',请参阅此处http://www.regular-expressions.info/reference.html
“。* $”表示“从字符串 end 中取出每个字符”;但是解析器会将“\ n”解释为一行的结尾,所以它在此处停止。