小编Hub*_*bro的帖子

为什么我得到Regexp警告"警告:嵌套重复操作符?并且*被替换为'*'"

我有一个正则表达式来解析挪威街道地址:

STREET_ADDRESS_PATTERN = <<-REGEX
    ^
    (?<street_name>[\w\D\. ]+)\s+
    (?<house_number>\d+)
    (?<entrance>[A-Z])?\s*,\s*
    (
        (?<postal_code>\d{4})\s+
        (?<city>[\w\D ]+)
    )?
    $
REGEX
Run Code Online (Sandbox Code Playgroud)

它工作得更早,我不记得我是否改变了一些东西,在这种情况下我改变了什么.无论如何,现在我收到了这个警告:

警告:嵌套重复运算符?和*被替换为'*'

比赛又回来了nil.谁能明白为什么我会收到这个警告?


注意:我目前正在使用这个(假)地址来测试表达式:"Storgata 38H,0273 Oslo".

ruby regex

2
推荐指数
1
解决办法
1918
查看次数

发现Ruby语法错误:NameError:未定义的局部变量或方法`'

以下是两行Ruby,它检查数组中有多少项是"有效"或"无效":

valid = cr.select { |x| x.valid? }.count
invalid = cr.select { |x| !x.valid? }.count
Run Code Online (Sandbox Code Playgroud)

任何人都能发现为什么第二行有语法错误?我已在调试器中逐步执行此代码,并在尝试执行该invalid = ...行时引发异常.这两行之间的唯一区别是!,我已经检查过了!true == false.我很难过.


这是整个代码文件:

require "colored"

require "address_kit/cli/interactive/command"
require "address_kit/cli/interactive/shell"

module AddressKit
  module CLI
    module Interactive
      module Commands

        class TableValidationStats < TableCommand
          NAME = "table_validation_stats"
          SUMMARY = "Displays statistics about the table address validation"
          HELP_TEXT = <<-TEXT.chomp.reset_indentation
            This command displays how many rows that has been validated, how
            many of those rows were valid, invalid or auto-corrected. …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-2.0

2
推荐指数
1
解决办法
3986
查看次数

如何暂时覆盖打印和放入课程?

我正在为我的项目开发一个shell.我希望Shell类在shell运行时覆盖所有打印功能,所以我这样做了:

# WARNING: Blocks until the user exits.
def start
  # Override Kernel print functions.
  master_print = Kernel.method :print
  master_puts = Kernel.method :puts

  Kernel.module_exec {
    define_method(:print) { |text = ""|
      self.send(:print_override, master_print, text)
    }
    define_method(:puts) { |text = ""|
      self.send(:puts_override, master_puts, text)
    }
    define_method(:puts_padded) { |text = ""|
      self.send(:puts_override, master_puts, "")
      self.send(:puts_override, master_puts, text)
      self.send(:puts_override, master_puts, "")
    }
  }

  # Readline loop and command parsing here...
end
Run Code Online (Sandbox Code Playgroud)

只要Shell类只输出任何文本,这样就可以正常工作,但只要命令类尝试puts我得到这个:

NoMethodError: undefined method `puts_override' for #<AddressKit::CLI::Interactiv …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-2.0

2
推荐指数
1
解决办法
571
查看次数

如何在Vim中映射特定文件类型的键?

我希望我的Enter键跟随帮助文件中的链接,因为我的键盘没有]键。因此,我提出:

nnoremap <Enter> <C-]>
Run Code Online (Sandbox Code Playgroud)

在中ftplugin/help.vim。这可行,但是此键映射现在是“全局”的,并且在其他地方(例如q:命令窗口)使该键的使用混乱。

那么,如何将键绑定限制为单个缓冲区,甚至单个文件类型?

vim

2
推荐指数
2
解决办法
896
查看次数

如何找出实际插入了多少Mongo文档?

我有一个看起来像这样的函数:

def insert_multiple_cakes(cake_list)
  ensure_indexes

  insert_list = cake_list.map { |cake| mongofy_values(cake.to_hash) }

  inserted = db[CAKE_COLLECTION].insert(insert_list, w: 0)

  return inserted.length
end
Run Code Online (Sandbox Code Playgroud)

该函数的目标是将所有蛋糕cake_list插入Mongo数据库.应忽略数据库中已存在的任何蛋糕.该函数应返回插入的蛋糕数,因此如果cake_list数据库中已存在5个蛋糕和2个蛋糕,则该函数应返回3.

我的问题是,经过一个小时的实验,我得出以下结论:

  • 如果写入问题(:w选项)为0,则插入调用将静默忽略所有重复插入,并且返回值包含所有输入文档,甚至包含未插入的文档.无论我设置什么,:continue_on_error或者:collect_on_error返回值始终包含所有文档,并且收集的错误列表始终为空.

  • 如果写入关注点为1,则插入调用将失败,Mongo::OperationFailure如果输入文档中存在任何重复项.无论我设置什么:continue_on_error或者什么都没关系:collect_on_error,当有重复时插入总是失败.

所以在我看来,实现这一目标的唯一方法是迭代输入列表,搜索每个文档并过滤掉已经存在的文档.我的应用程序将一次处理(至少)数千个插入,所以我喜欢这个计划,就像我想跳下桥梁一样.

我误解了什么,或者Ruby客户端可能被窃听?


为了演示,这个功能完全符合我的要求和工作:

def insert_multiple_cakes(cake_list)
  ensure_indexes

  collection = db[CAKE_COLLECTION]

  # Filters away any cakes that already exists in the database.
  filtered_list = cake_list.reject { |cake|
    collection.count(query: {"name" => cake.name}) == 1
  }

  insert_list = filtered_list.map { |cake| …
Run Code Online (Sandbox Code Playgroud)

ruby mongodb

2
推荐指数
1
解决办法
186
查看次数

如何创建涉及数字 (0-9) 的 Vim 键绑定?

我想创建一个按键绑定来将折叠级别设置为特定数字。ex命令是:

:set foldlevel=n
Run Code Online (Sandbox Code Playgroud)

n折叠级别在哪里。我想绑定<leader>z加上一个数字来设置折叠级别。我的目标是这个调用(假设我的领导键是\):

\z3
Run Code Online (Sandbox Code Playgroud)

它应该依次调用这个命令:

:set foldlevel=3
Run Code Online (Sandbox Code Playgroud)

是否可以在这样的按键绑定中包含数字?如果是这样,是如何做到的?

vim

2
推荐指数
1
解决办法
468
查看次数

我如何打破PHP中的字符串变量?

这应该很容易回答.当我有一个变量,比如说$ id,并且在一个字符串中,我希望它在两个下划线之间.像这样的东西:

$id = 1;
$myString = "row_$id_info";
Run Code Online (Sandbox Code Playgroud)

现在,php将看到"row_"和变量$ id_info - 而这不是我想要的.

所以我的问题很明确:我如何打破PHP中的字符串变量?

感谢所有回复

php string variable-substitution

1
推荐指数
1
解决办法
132
查看次数

如何将工作副本上的更改提交到不同(但相同)的存储库?

这似乎最近一直发生在我身上.我有一个存储库"X".该存储库有一个备份.有一天服务器托管存储库X死了,所以我必须使用备份为我的SVN存储库创建一个新位置.这是问题所在:

我在工作副本上完成了数小时的工作.当我单击提交时,它会尝试将更改提交到死存储库URL.我希望工作副本开始处理新的存储库X没有任何麻烦,但运行"开关"不起作用("这些不是相同的存储库").

我通常做的是从工作副本创建一个补丁,检查新的存储库并应用补丁.然而,最近,我不断收到补丁文件的错误和废话,所以我不再相信它们.对我来说,最新的解决方案是创建一个全新的存储库并复制文件,丢失所有文件历史记录.

显然这是不可接受的,所以如果有人知道如何顺利​​,轻松地开始使用新的存储库,请回复.

svn backup repository

1
推荐指数
1
解决办法
64
查看次数

无效的'sizeof'应用于不完整类型

我的标题中有这个

struct str_list_element_struct
{
    char* string;
    struct str_list_element_struct* next;
};
typedef struct str_list_element_scruct str_list_element;
typedef str_list_element* str_list;
Run Code Online (Sandbox Code Playgroud)

当我尝试sizeof它时得到这个错误

str_list.c:21:错误:'sizeof'无效应用于不完整类型'str_list_element'

我的类型" 不完整 "怎么样?

c struct typedef

1
推荐指数
1
解决办法
4691
查看次数

如何防止Django在ModelAdmin中转义HTML

我有这个类来配置django.contrib.admin我的Stream模型.

class StreamAdmin(admin.ModelAdmin):
    def stream_title(instance):
        return instance.info.title

    def network_name(instance):
        return '<img src="%s" />' % instance.network.image_url

    fieldsets = (
        (None, {
            'fields' : ('name', 'network', 'score', 'custom_url')
        }),

    )

    list_display = ('name', stream_title, network_name, 'online', 'score')

    ordering = ('name', 'score')
Run Code Online (Sandbox Code Playgroud)

network_name函数返回HTML,但它已被转义.我怎么能阻止它?

python django django-admin

1
推荐指数
1
解决办法
1237
查看次数