Regex 从字符串声明变量
我想在Perl脚本中将以下字符串的值包含到$QName中: 队列(SYSTEM.SELECTION.VALIDATION.QUEUE) 因此,我尝试将Regex 从字符串声明变量,regex,perl,Regex,Perl,我想在Perl脚本中将以下字符串的值包含到$QName中: 队列(SYSTEM.SELECTION.VALIDATION.QUEUE) 因此,我尝试将SYSTEM.SELECTION.VALIDATION.QUEUE包含到$QName中,如下代码: my ($QName) = /QUEUE\((\w+)\)/; print "$QName \n"; 但是,此代码未成功生成输出 输出应为: SYSTEM.SELECTION.VALIDATION.QUEUE 您需要在图案中添加点: my ($QN
SYSTEM.SELECTION.VALIDATION.QUEUE
包含到$QName
中,如下代码:
my ($QName) = /QUEUE\((\w+)\)/;
print "$QName \n";
但是,此代码未成功生成输出
输出应为:
SYSTEM.SELECTION.VALIDATION.QUEUE
您需要在图案中添加点:
my ($QName) = /QUEUE\(([\w.]+)\)/;
# ^ ^^
# |
# `--You're missing this dot:
# The "SYSTEM.SELECTION.VALIDATION.QUEUE" value comprises letters AND DOTS
演示:您需要在图案中添加点:
my ($QName) = /QUEUE\(([\w.]+)\)/;
# ^ ^^
# |
# `--You're missing this dot:
# The "SYSTEM.SELECTION.VALIDATION.QUEUE" value comprises letters AND DOTS
演示:不太清楚您想要实现什么,但我想您想要:
$input_string = 'QUEUE(SYSTEM.SELECTION.VALIDATION.QUEUE)';
my ($QName) = $input_string =~ /QUEUE\((.+?)\)/;
print $QName,"\n";
输出:
SYSTEM.SELECTION.VALIDATION.QUEUE
现在还不清楚你想要实现什么,但我想你想要:
$input_string = 'QUEUE(SYSTEM.SELECTION.VALIDATION.QUEUE)';
my ($QName) = $input_string =~ /QUEUE\((.+?)\)/;
print $QName,"\n";
输出:
SYSTEM.SELECTION.VALIDATION.QUEUE
\w
与点不匹配。您可以将括号内的所有内容与[^()]
匹配,这是一个与除(
和)
之外的任何字符匹配的带括号的否定字符类:my($QName)=/QUEUE\([^()]+)\/代码>该\w
与点不匹配。您可以将括号内的所有内容与[^()]
匹配,这是一个与除(
和)
之外的任何字符匹配的带括号的否定字符类:my($QName)=/QUEUE\([^()]+)\/
@Dmitry\u Egorov非常感谢,我接受你的回答,我可以知道这个正则表达式中[]的函数是什么吗?它不能编译。@Toto:在什么环境下它不能编译?在为x86_64-msys-thread-multi构建的本地perl 5,版本22,subversion 0(v5.22.0)上运行良好终端中的code>给出:在-e行1的模式匹配(m//)中使用未初始化值$。
这是因为在我的代码片段中,我只显示了需要更改的行。紧接着提供了一个指向整个测试脚本的链接。如果您希望从命令行运行它,请尝试以下操作:$echo'队列(SYSTEM.SELECTION.VALIDATION.QUEUE)| perl-nlwe'my($QName)=/QUEUE\([\w.]+)\)/;打印$QName'
@Dmitry\u Egorov非常感谢,我接受你的回答,我可以知道这个正则表达式中[]的函数是什么吗?它不能编译。@Toto:在什么环境下它不能编译?在为x86_64-msys-thread-multi构建的本地perl 5,版本22,subversion 0(v5.22.0)上运行良好终端中的code>给出:在-e行1的模式匹配(m//)中使用未初始化值$。
这是因为在我的代码片段中,我只显示了需要更改的行。紧接着提供了一个指向整个测试脚本的链接。如果您希望从命令行运行它,请尝试以下操作:$echo'队列(SYSTEM.SELECTION.VALIDATION.QUEUE)| perl-nlwe'my($QName)=/QUEUE\([\w.]+)\)/;打印$QName'
@Azizul:别担心,我肯定不是你,我想我知道是谁。@Azizul:别担心,我肯定不是你,我想我知道是谁。