我无法在多行中分割我的正则表达式。我希望我的正则表达式匹配给定的行:
* 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 regex中删除内联变量:
my $firstRegexpr = qr/^\s*\*\s*Code\s+\"(?<Code>((\")*[^\"$]+)+)\"\$/x;
字符 $] 在正则表达式中匹配为变量,如何将其定义为变量?
非常感谢您的时间,请提供明确的示例。
答案 0 :(得分:0)
x
标志的作用非常简单地说'忽略空格'。
因此,您不再匹配'空格'字符,而是 使用
\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
。