我无法将正则表达式分成多行。我希望我的正则表达式与给定的行匹配:
* Code "l;k""dfsakd;.*[])_lkaDald"
所以我创建了这个有效的正则表达式:
my $firstRegexpr = qr/^\s*\*\s*Code\s+\"(?<Code>((\")*[^\"]+)+)\"/x;
但现在我想像这样将它分成多行(并希望它匹配相同的东西!):
my $firstRegexpr = qr/^\s*\*\s*Code\s+\"
(?<Code>((\")*[^\"]+)+)\"/x;
我读到了这篇文章,但我在使用它时遇到了问题:
/
^\s*\*\s*Code\s+\"
(?<Code>((\")*[^\"]+)+)\"
/x
我的最后一个问题是关于删除 perl 正则表达式中的内联变量:
my $firstRegexpr = qr/^\s*\*\s*Code\s+\"(?<Code>((\")*[^\"$]+)+)\"\$/x;
人物$]在正则表达式中作为变量进行匹配,如何将其定义为不作为变量?
非常感谢您抽出时间并请提供明确的例子。
什么是x
flag 的作用很简单,就是“忽略空白”。
所以你不再匹配“空格”字符
,而不是have to use \s
或类似的。
所以你可以写:
if ( m/
^
\d+\s+
fish:\w+\s+
$
/x ) {
print "Matched\n";
}
您可以在各种网站上测试正则表达式,但一个例子是https://regex101.com/
就拿你的例子来说:https://regex101.com/r/eG5jY8/1
但你的怎么不行呢?
这匹配:
my $string = q{* Code "l;k""dfsakd;.*[])_lkaDald"};
my $firstRegexpr = qr/^\s*
\*
\s*
Code\s+
\"
(?<Code>((\")*[^\"]+)+)
\"
/x;
print "Compiled_Regex: $firstRegexpr\n";
print "Matched\n" if ( $string =~ m/$firstRegexpr/ );
至于没有$]
- 有两个答案。任一:使用\
逃避它,或使用\Q\E
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)