Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从字符串声明变量_Regex_Perl - Fatal编程技术网

Regex 从字符串声明变量

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

我想在Perl脚本中将以下字符串的值包含到$QName中:

队列(SYSTEM.SELECTION.VALIDATION.QUEUE)

因此,我尝试将
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)上运行良好给出:
在-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)上运行良好给出:
在-e行1的模式匹配(m//)中使用未初始化值$。
这是因为在我的代码片段中,我只显示了需要更改的行。紧接着提供了一个指向整个测试脚本的链接。如果您希望从命令行运行它,请尝试以下操作:
$echo'队列(SYSTEM.SELECTION.VALIDATION.QUEUE)| perl-nlwe'my($QName)=/QUEUE\([\w.]+)\)/;打印$QName'
@Azizul:别担心,我肯定不是你,我想我知道是谁。@Azizul:别担心,我肯定不是你,我想我知道是谁。