Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,这是我的字符串: my $var = "eval(sometext,'|function|65200|url|click|Chargement|margin'.split('|'),0,{}))" 我想得到65200这个数字,我尝试了这个my($key)=$var=~/eval.*.\\\\\\\\\\\\\\\\\\\.*$/regex,但我什么也没有得到。如果您只需要第一个由十进制数字组成的子字符串,那么它非常简单: my $var = "eval(sometext,'|function|

这是我的字符串:

my $var = "eval(sometext,'|function|65200|url|click|Chargement|margin'.split('|'),0,{}))"

我想得到65200这个数字,我尝试了这个
my($key)=$var=~/eval.*.\\\\\\\\\\\\\\\\\\\.*$/
regex,但我什么也没有得到。

如果您只需要第一个由十进制数字组成的子字符串,那么它非常简单:

my $var = "eval(sometext,'|function|65200|url|click|Chargement|margin'.split('|'),0,{}))";

my ($num) = $var =~ /(\d+)/;

print $num;
输出

65200
更新

要提取由管道字符包围的第一个数字序列,只需使用

my ($num) = $var =~ /\|(\d+)\|/;

如果您只需要由十进制数字组成的第一个子字符串,那么它非常简单:

my $var = "eval(sometext,'|function|65200|url|click|Chargement|margin'.split('|'),0,{}))";

my ($num) = $var =~ /(\d+)/;

print $num;
输出

65200
更新

要提取由管道字符包围的第一个数字序列,只需使用

my ($num) = $var =~ /\|(\d+)\|/;

使用Perl的Split函数代替正则表达式<代码>$var只是整个html文档的一部分,拆分在我看来不太好,谢谢你的回复。ruby正则表达式是perl正则表达式,所以你可以使用这个工具:对我来说,你的例子很有效。刚才补充说,;使用Perl的Split函数代替正则表达式<代码>$var只是整个html文档的一部分,拆分在我看来不太好,谢谢你的回复。ruby正则表达式是perl正则表达式,所以你可以使用这个工具:对我来说,你的例子很有效。刚才补充说,;这部分文字可能有其他数字,所以我需要指定它在
之间,所以这一部分非常有效
/eval.*?\\\\\(\d+)\\\\/
,谢谢^^@user283222:没有必要这么做。请参阅我的更新。sometext部分可能有其他数字,因此我需要指定它在
之间,因此这一部分非常有效
/eval.*.\\\\\(\d+)\\\/
,谢谢^^@user283222:不需要所有这些。查看我的更新。