Perl正则表达式得到'This text':(
Perl regular expression to get 'This text':(
例如,如果我有 'Sample text':(
我的 $1 应该是 Sample text
,所以任何包含在 ' '
和 :(
之前的字符串
以下方法可以解决问题:
/'([^']*)':\(/
例如,
my $str = "'Sample text':(";
my ($match) = $str =~ /'([^']*)':\(/
or die("No match\n");
say $match; # Sample text
这里是最简单的回答问题的代码:
#/usr/bin/perl
use strict;
"'Sample text':(" =~ /'(.*)':\(/;
print "\n"
我不会在此处添加任何新内容,而只是添加一些示例和一个供您自己测试并查看其工作原理的位置。这里有两个假设:
- 没有转义字符,例如
'Sam\'ple text'
.
:(
就在您的字符串之后。如果不是,则您需要进行前瞻。
+
要求字符串中至少有一个字符。所以 'a':(
有效但 '':(
无效。如果要允许空字符串,请使用 *
而不是 +
。
例如,如果我有 'Sample text':(
我的 $1 应该是 Sample text
,所以任何包含在 ' '
和 :(
以下方法可以解决问题:
/'([^']*)':\(/
例如,
my $str = "'Sample text':(";
my ($match) = $str =~ /'([^']*)':\(/
or die("No match\n");
say $match; # Sample text
这里是最简单的回答问题的代码:
#/usr/bin/perl
use strict;
"'Sample text':(" =~ /'(.*)':\(/;
print "\n"
我不会在此处添加任何新内容,而只是添加一些示例和一个供您自己测试并查看其工作原理的位置。这里有两个假设:
- 没有转义字符,例如
'Sam\'ple text'
. :(
就在您的字符串之后。如果不是,则您需要进行前瞻。+
要求字符串中至少有一个字符。所以'a':(
有效但'':(
无效。如果要允许空字符串,请使用*
而不是+
。