小编Lou*_*Lou的帖子

Perl 中的 qr/ 和 m/ 有什么区别?

来自 Perldoc:

qr/STRING/msixpodualn
Run Code Online (Sandbox Code Playgroud)

该运算符将其 STRING 引用(并可能编译)为正则表达式。STRING 的插值方式与 m/PATTERN/ 中的 PATTERN 相同

m/PATTERN/msixpodualngc
/PATTERN/msixpodualngc
Run Code Online (Sandbox Code Playgroud)

在字符串中搜索模式匹配,在标量上下文中,如果成功则返回 true,如果失败则返回 false。如果没有通过 =~ 或 !~ 运算符指定字符串,则搜索 $_ 字符串。(用 =~ 指定的字符串不必是左值 - 它可能是表达式求值的结果,但请记住 =~ 绑定得相当紧密。)另请参阅 perlre。

选项如上面 qr// 中所述

我确信我错过了一些明显的东西,但我根本不清楚这些选项有何不同 - 它们看起来基本上是同义词。你什么时候会使用qr//代替m//,反之亦然?

regex perl precompiled

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

Perl 单行正则表达式无法正确替换 - 返回错误

这可能是显而易见的事情,但我必须问,因为我没有看到它。

我试图在此文本文件中进行以下替换。我要这个:

bind_password = 'grafana'
Run Code Online (Sandbox Code Playgroud)

变成这样:

bind_password = ''
Run Code Online (Sandbox Code Playgroud)

我尝试在包含该行的文件上使用以下正则表达式单行:

$ perl -0pe 's/(bind_password = \')grafana\'/$1\'/g' file.txt
bash: syntax error near unexpected token `)'
Run Code Online (Sandbox Code Playgroud)

当我在 regex101 上尝试正则表达式时,效果很好: https: //regex101.com/r/0fb4Pu/1。不同之处在于我必须转义单引号。我尝试在正则表达式周围使用双引号而不是单引号,如下所示:

perl -0pe "s/(bind_password = ')grafana'/$1'/g" file.txt
Run Code Online (Sandbox Code Playgroud)

但是,虽然这不会返回错误,但它并没有达到我想要的效果。相反,它用一个冒号替换字符串,如下所示:

'
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

bash perl

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

为什么 Auto_Increment 返回 null?

我正在编写一个 Web 应用程序,它将向 MySQL 数据库表中插入新记录。大多数信息都是用户提供的,除了主键,我想使用 Auto_Increment 获取主键。当我从 Web 应用程序运行以下查询时:

SELECT Auto_Increment FROM information_schema.tables WHERE table_name='charlist';
Run Code Online (Sandbox Code Playgroud)

它不返回任何内容 - 我通过将查询结果存储在变量中然后echo对该变量进行检查,但没有输出任何内容。我还使用 MySQL 控制台运行此查询,它返回以下内容:

+----------------+
| Auto_Increment |
+----------------+
|           NULL |
+----------------+
Run Code Online (Sandbox Code Playgroud)

我的表肯定有主键字段,并且有5条记录,主键字段被填充。这是表的结构。

+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| id             | int(11)     | NO   | PRI | NULL    |       |
| bookIntroduced | int(11)     | YES  |     | NULL    |       |
| pageIntroduced | int(11)     | YES  |     | NULL    | …
Run Code Online (Sandbox Code Playgroud)

php mysql sql auto-increment

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

COUNTIF表示在另一列中包含给定值的行

我的表格列出了George RR Martin目前出版的"冰与火之歌"中所有5首角色.每行包含一条记录,表明该字符所在系列中的哪一本书(编号为1-5)和一个表示该字符性别(M/F)的字母.例如:

   A                  B     C
1  Character          Book  Gender
   ------------------------------
2  Arya Stark        -  1  -  F
3  Eddard Stark      -  1  -  M
4  Davos Seaworth    -  2  -  M
5  Lynesse Hightower -  2  -  F
6  Xaro Xhoan Daxos  -  2  -  M
7  Elinor Tyrell     -  3  -  F
Run Code Online (Sandbox Code Playgroud)

我可以COUNTIF用来发现这张表中有三个女性和三个男性,但我想知道,例如,书中有多少男性.我怎么能写出一个可以计算这个数的公式呢?这是我想要实现的伪代码:

=COUNTIF(C2:C7, Column B = '2' AND Column C = 'M')
Run Code Online (Sandbox Code Playgroud)

这会输出2.

我知道这个任务更适合数据库和SELECT查询,但我想知道如何在LibreOffice Calc电子表格的约束下解决这个问题,而不使用宏.基于Excel的解决方案很好,只要它们也适用于Calc.如果没有使用的解决方案,COUNTIF只要它有效就没关系.

countif libreoffice-calc

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

为什么这些陈述会产生相反的结果呢?

我正在尝试过滤一个对象列表,每个对象都有一个日历年作为其值之一.用户键入开始年份(例如1920年)和结束年度(1940年),并且将具有这两个值之间的年份的任何对象添加到列表中.因此,对于整个列表中的每个对象,我执行以下条件:

If _end >= _nList(i).Year > _start Then
     filterList.Add(_nList(i))
End If
Run Code Online (Sandbox Code Playgroud)

但是,这会返回false.但当我改变它时:

If _start < _nList(i).Year <= _end Then
      filterList.Add(_nList(i))
End If
Run Code Online (Sandbox Code Playgroud)

这评估为true,并运行代码._nList(i).Year是1928年,_start是1920年,_end是1940年.从逻辑上讲,这两个陈述应该是等价的:

1940 >= 1928 > 1920
1920 < 1928 <= 1940
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,他们不是这种情况.我错过了什么?

vb.net comparison

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

从 FILTER 函数只返回一列

我正在 Excel 中试用新的 FILTER 函数,它的工作方式似乎与 Google 表格中的大致相同。然而,我还没有弄清楚的一件事是,是否有任何类似于 Sheet 的 QUERY 函数的东西。我可以很好地生成 FILTER,但我不知道如何只显示一列结果。在下面的示例中,我只想显示 FILTER 结果的第二列。

有没有一个简单的解决方案来做到这一点?

在此处输入图片说明

excel filter excel-formula

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

为什么 C 数组元素(貌似)存储在 4 个块中?

我正在学习 C 语言并了解指针。据我了解,当您声明一个数组时,该数组的地址是该数组中第一个元素的地址。所有其他元素都连续存储在内存中。

当我使用onlinegdb.com 上的在线 C 编译器运行此代码时...

int main()
{
    int num[5] = { 0, 1, 2, 3, 4 };

    for (i = 0; i < 5; i++) {
        printf("num[%d] has the value %d and is stored at address %p\n",
               i, num[i], &num[i]);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我观察到以下情况...

num[0] has the value 0 and is stored at address 0x7ffe9973e600
num[1] has the value 1 and is stored at address 0x7ffe9973e604
num[2] has the value 2 and is stored at …
Run Code Online (Sandbox Code Playgroud)

c memory arrays memory-address

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

Git 如何(以及多久)扫描工作目录中的“未跟踪”文件?

一旦你在一个目录上运行 git init ,git 就会知道该目录及目录下存在的所有文件。这些是未跟踪的文件。我非常熟悉当您暂存这些文件并且它们成为“跟踪”文件时会发生什么。但我想知道的是,Git 是如何找到未跟踪的文件的?git 是否每隔几分钟或固定间隔运行一次树命令?每次输入 git status 或 git add 时它都会运行树命令吗?或者每次保存文件时?有什么更聪明的事情发生吗?

简而言之,我的问题是:

  1. Git 如何找到未跟踪的文件?

  2. Git 多久搜索一次“未跟踪”文件?

git

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

MySQL - insert into语句要求我输入主键

我几乎是SQL的新手,我正在使用MySQL和SQLyog.我有五个字段,主键的StudentForename,StudentSurname,StudentAge,StudentHouse和StudentID.StudentID字段设置为主键,而不是Null和AutoIncrement.我正在尝试使用INSERT INTO语句而不必输入主键 - 显然我不应该,它应该更新自己.但它没有工作,它返回错误"列计数与第1行的值计数不匹配".这是我正在使用的代码.我已经设置了表,所以我没有得到查询的代码

INSERT INTO students VALUES('Harry', 'Potter', 'Slytherin', 30)
Run Code Online (Sandbox Code Playgroud)

mysql sql database insert primary-key

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

是否有公式或 VBA 方法来确定 Excel 中突出显示的单元格?

我想编写一个公式来获取用户单击的单元格的行号和列号。每次用户单击不同的单元格时,公式应自动更新以反映当前选定的单元格。我猜这不能通过公式来完成 - 如果没有,有没有办法在 VBA 中做到这一点?

excel vba excel-formula

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