小编And*_*rtz的帖子

Perl正则表达式从替换返回匹配

我试图同时删除并存储(到一个数组)字符串中的一些正则表达式的所有匹配.要将字符串中的匹配项返回到数组中,您可以使用

my @matches = $string=~/$pattern/g;
Run Code Online (Sandbox Code Playgroud)

我想对替换正则表达式使用类似的模式.当然,一个选择是:

my @matches = $string=~/$pattern/g;
$string =~ s/$pattern//g;
Run Code Online (Sandbox Code Playgroud)

但是如果没有在整个字符串上运行两次正则表达式引擎,真的没有办法做到这一点吗?就像是

my @matches = $string=~s/$pattern//g
Run Code Online (Sandbox Code Playgroud)

除了这将只返回子数,不管列表上下文.作为一个安慰奖,我还会采用一种方法来使用qr //我可以简单地将引用的正则表达式修改为子正则表达式,但我不知道这是否可能(并且这不会妨碍搜索相同的字符串两次).

regex perl substitution

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

如何编写一个将自身从历史记录中删除的 bash 脚本或函数?

我想编写一个 bash 脚本或函数,能够从调用者的 bash 历史记录中删除与其自身调用相对应的条目。这可能吗?

该用例是在团队拥有的集群上编写秘密的包装器,我想添加一些便利,以确保所有团队成员不会无意中以纯文本形式将秘密留在 bash 历史记录中。起初,我打算要求使用脚本read -rs来防止命令包含秘密。然后,意识到有些人无论如何都会不可避免地在命令调用中输入秘密名称,我想知道我是否可以支持这一点,但删除调用 bash 历史记录。

本质上,就像history -d $HISTCMD在脚本中添加一样;但是,直到脚本完成后才会写入历史记录项。所以没有骰子。

有没有办法告诉 bash“不要在历史记录中记录此命令”或在完成后将其删除?

bash shell history

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

Ruby内部展平(数组数组)

我有一个像下面这样的数组

[
  [[0, :a], [2, :b]],
  [3, :c],
  [4, :d],
  [[5, :e], [6, :f], [7, :g]]
]
Run Code Online (Sandbox Code Playgroud)

也就是说,元素数组是(1)2元素数组,或(2)2元素数组数组.

我试图找到一种优雅的方法来"扁平化"这个数组,使得(2)元素扩展到根级元素.在这个例子中:

[[0, :a], [2, :b], [3, :c], [4, :d], [5, :e], [6, :f], [7, :g]]
Run Code Online (Sandbox Code Playgroud)

这几乎就像使用一样Array#flatten(depth),除了depth需要从内到外工作,而不是外在工作.

实际的数组可能变得非常大,因此<<出于性能原因,我不希望将()元素推送到循环中的新数组.出于某种原因,我想不出如何使用的任意组合map,flatten,flat_map,或其他更有效的Enumerable方法来完成,而不需要写一个C++ -风格的预分配,并填入循环.任何人都可以想到更多Rubyist方式来做到这一点吗?

ruby arrays flatten

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

我如何为非表单文本使用 material-ui 主题的错误样式(颜色)

文档清楚地说明了对表单输入(例如文本字段)使用错误样式。但是如何在自定义元素(例如文件上传按钮的文本标签)或任何其他可能不适合预定义组件的自定义组件上使用相同的样式?

为清楚起见进行编辑:我不想只选择我喜欢的颜色并使用适当的选择器将其放入我的 css 中。我想确保我使用与主题相同的错误颜色,无论是默认的、某些导入的主题还是自定义的(如果自定义很容易,但不是 DRY,只需在 css 中使用相同的值)。

具体来说,在这个用例中,我想限制用户上传小于 100MB 的文件,如果他们选择了大于此限制的文件,则显示错误消息。我想以配置主题的错误样式显示文本,但是从material-ui docs我只能看到如何设置文本字段等预打包组件的错误属性。

所以我在这里简化了:

      <input
        accept="video/*"
        id="file-upload-button"
        type="file"
        onChange={(e) => {this.fileChanged(e);}}
      />
      <label htmlFor="file-upload-button">
        <Button variant="contained" component="span" color="default">
          Browse video
        </Button>
        <br /><small>(Max size: 100MB)</small>
      </label>
Run Code Online (Sandbox Code Playgroud)

其中input标签已display: none通过 css 文件应用。还,

  fileChanged(e) {
    let file = e.target.files[0];
    let sizeMB = file.size / 2**20;
    this.setState({
      selectedFile: e.target.files[0],
      fileTooLarge: sizeMB > 100
    });
  }
Run Code Online (Sandbox Code Playgroud)

如何获取主题的错误颜色以将其应用于“最大尺寸”消息或其他元素?

css reactjs material-ui

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

Ruby扩展了NilClass

我正在尝试为应用程序扩展Ruby的NilClass,以便任何方法调用都将返回nil(实际上是self,新的扩展nil).目的是避免许多额外的零检查逻辑,例如,

results = data.nil? nil : data.process()
output = results.nil? nil : results.format()
Run Code Online (Sandbox Code Playgroud)

并简单地替换它

output = data.process().format()
Run Code Online (Sandbox Code Playgroud)

如果在链中的任何地方返回nil,则返回nil.

让一个类响应任意消息很容易:

class SuperNil
  def method_missing(sym, *args)
    return self
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,supernil = SuperNil.new; supernil.anything返回对象supernil.但是,这并不是真的,因为它会评估为真.它会以某种方式扩展NilClass,以便我的对象评估为false吗?我遇到麻烦的地方是,即使在扩展NilClass之后,我也无法创建SuperNil的对象.NilClass.new给出了一个错误,SuperNil.new也是如此.

是否可以创建NilClass扩展的对象?它会评估为假吗?

ruby null boolean

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

标签 统计

ruby ×2

arrays ×1

bash ×1

boolean ×1

css ×1

flatten ×1

history ×1

material-ui ×1

null ×1

perl ×1

reactjs ×1

regex ×1

shell ×1

substitution ×1