- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在正则表达式中使用字符串变量进行搜索模式和替换。预期的输出是这样的,
$ perl -e '$a="abcdeabCde"; $a=~s/b(.)d/_$1$1_/g; print "$a\n"'
a_cc_ea_CC_e
$1
没有被评估。
$ perl -e '$a="abcdeabCde"; $p="b(.)d"; $r="_\$1\$1_"; $a=~s/$p/$r/g; print "$a\n"'
a_$1$1_ea_$1$1_e
$ perl -e '$a="abcdeabCde"; $p="b(.)d"; $r="_\$1\$1_"; $a=~s/$p/$r/gee; print "$a\n"'
Scalar found where operator expected at (eval 1) line 1, near "$1$1"
(Missing operator before $1?)
Bareword found where operator expected at (eval 1) line 1, near "$1_"
(Missing operator before _?)
Scalar found where operator expected at (eval 2) line 1, near "$1$1"
(Missing operator before $1?)
Bareword found where operator expected at (eval 2) line 1, near "$1_"
(Missing operator before _?)
aeae
$p
和
$r
是我自己写的。我需要的是在不触及 perl 代码的情况下进行多个类似的正则表达式替换,所以
$p
和
$r
必须在单独的数据文件中。我希望这个文件可以在以后与 C++/python 代码一起使用。
$p
的一些示例和
$r
.
^(.*\D)?((19|18|20)\d\d)年 $1$2<digits>年
^(.*\D)?(0\d)年 $1$2<digits>年
([TKZGD])(\d+)/(\d+)([^\d/]) $1$2<digits>$3<digits>$4
([^/TKZGD\d])(\d+)/(\d+)([^/\d]) $1$3分之$2$4
最佳答案
与 $p="b(.)d";
你得到一个带有文字字符的字符串 b(.)d
.通常,正则表达式模式不会保留在带引号的字符串中,并且在正则表达式中可能没有它们的预期含义。但是,请参阅最后的注释。
这是什么qr operator适用于:$p = qr/b(.)d/;
将字符串形成为正则表达式。
至于更换零件和/ee
,问题是$r
首先评估,以产生 _$1$1_
,然后将其评估为代码。唉,这不是有效的 Perl 代码。 _
是裸词甚至是 $1$1
本身无效(例如,$1 . $1
会是)。$r
提供的示例有 $N
以各种方式与文本混合。解析它的一种方法是提取所有 $N
并将所有其他内容放入一个列表中,该列表保持字符串中的顺序。然后,可以将其处理为有效代码的字符串。例如,我们需要
'$1_$2$3other' --> $1 . '_' . $2 . $3 . 'other'
sub repl {
my ($r) = @_;
my @terms = grep { $_ } split /(\$\d)/, $r;
return join '.', map { /^\$/ ? $_ : q(') . $_ . q(') } @terms;
}
$var =~ s/$p/repl($r)/gee;
/(...)/
在
split
的模式,分隔符作为列表的一部分返回。因此,这是从
$r
中提取的一组术语,它们要么是
$N
或其他,按其原始顺序并保留所有内容(尾随空格除外)。这包括可能的(前导)空字符串,因此需要过滤掉这些字符串。
$N
之外的每个术语s 包裹在
'...'
中,所以当它们都由
.
加入时我们得到一个有效的 Perl 表达式,如上例所示。
/ee
将使此函数返回字符串(如上面),并将其评估为有效代码。
/ee
的安全性外部输入不是这里的问题。尽管如此,这还是要记住的。见
this post ,由
Håkon Hægland 提供在评论中。随着讨论,它还将我们引导至
String::Substitution .它的用法在
this post 中演示.解决此问题的另一种方法是使用
replace
来自
Data::Munge
/ee
见
this post ,有几个有用的答案。
"b(.)d"
对于正则表达式模式
"\w"
只是一个逃脱的
w
(什么是无法识别的)。单引号应该有效,因为没有插值。尽管如此,用作正则表达式模式的字符串最好使用
qr
形成。 ,因为我们得到了一个真正的正则表达式。然后也可以使用所有修饰符。
关于regex - Perl:如何在正则表达式中使用字符串变量作为搜索模式和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41280103/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!