- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个小的 perl 片段:
my $n = 1;
my $re_str = '\d';
my $re_str_q = '\Q1\E';
printf "re_str match: %s\n", ($n =~ /$re_str/);
printf "re_str_q match: %s\n", ($n =~ /$re_str_q/);
printf "direct match: %s\n", ($n =~ /\Q1\E/);
运行时产生如下输出:
re_str match: 1
re_str_q match:
direct match: 1
那么,我的问题是为什么第二个 printf
不匹配?
最佳答案
如果你改变
my $re_str_q = '\Q1\E'; #from
my $re_str_q = qr/\Q1\E/; #to
这将是传递动态生成的正则表达式的正确方法,然后它会给出以下结果
re_str match: 1
re_str_q match: 1
direct match: 1
还有如果你用过
use strict;
use warnings;
你会得到一个警告
Unrecognized escape \Q passed through in regex; marked by <-- HERE in m/\Q <-- HERE 1\E/ at so.pl line 9.
Unrecognized escape \E passed through in regex; marked by <-- HERE in m/\Q1\E <-- HERE / at so.pl line 9.
这会给您一些关于出了什么问题的指示。
更新
要更详细地了解这一点,您可以阅读 here
引用文档的摘录
以下转义序列在interpolate
的结构中可用,但在transliterations
中不可用。
\l lowercase next character only
\u titlecase (not uppercase!) next character only
\L lowercase all characters till \E or end of string
\U uppercase all characters till \E or end of string
\F foldcase all characters till \E or end of string
\Q quote (disable) pattern metacharacters till \E or
end of string
\E end either case modification or quoted section
(whichever was last seen)
参见 quotemeta对于\Q 引用的字符的确切定义。
\L 、\U 、\F 和\Q 可以堆叠,在这种情况下,您每个都需要一个\E 。例如:
say"This \Qquoting \ubusiness \Uhere isn't quite\E done yet,\E is it?";
This quoting\ Business\ HERE\ ISN\'T\ QUITE\ done\ yet\, is it?
关于regex - Perl,动态生成的带有反斜杠元字符的正则表达式字符串奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16795560/
我是 java 正则表达式的新手。我在 Docs 中看到了这个: $ The end of a line 但是当我尝试这个片段时: String str = "firstline\r\nsecondl
我需要在 apache (httpd) 中设置 500 个不同的虚拟主机,并且配置相同。我认为可以使用元字符或循环,而不是复制相同的 500 次......我尝试搜索一些信息,但找不到任何解决方法。有
我正在使用 os.walk(directory) 递归地显示该目录中的所有文件。问题是我只需要显示名称中包含询问字符串的文件,而且它还必须管理元字符。 我现在拥有的是: for root, subdi
下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为: 字符 描述 \ 将下一个字符标记为一个特殊字
在练习中,我编写了一个由最多匹配 3 个大写字符的元字符组成的表达式。 例子 a -> match A -> match Ab -> match AbC -> match AbCd -> match
我正在学习 Java OCP 证书。我正在参加模拟考试来准备。 示例程序: public class Quetico { public static void main(String[] ar
Haskell PCRE 库是否提供了转义字符串中正则表达式元字符的函数? IE。一个函数,用于将“[$100]”这样的字符串转换为“\[\$100\]”。 我正在寻找Python的re.escape
我研究过,我知道 '?'如果结果在匹配函数中出现 0 次或 1 次,则用于匹配。不幸的是,我找不到一个明确的例子来说明“?”到底是什么?匹配。 干杯。 最佳答案 正则表达式 co?at 将匹配 coa
我正在尝试转义 Java 中的 RegExp 元字符。以下是我想要的: INPUT STRING: "This is $ test" OUTPUT STRING: "This is \$ test"
什么是正则表达式呢? 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),它是计算机科学的一个概念。正则表达式使用单
说到shell通配符(wildcard),大家在使用时候会经常用到。 下面是一个实例: [chengmo@localhost ~/shell]$ ls a.txt b.txt c.old
我现在很困惑。 期待 documentation陈述如下: Remember that Pexpect does NOT interpret shell meta characters such as
\D元字符可以匹配非数字字符,等价于"[^0-9]"。 语法结构: (1).构造函数方式: new RegExp("\\D") (2).对象直接量方式
我是一名优秀的程序员,十分优秀!