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"

我不会在此处添加任何新内容,而只是添加一些示例和一个供您自己测试并查看其工作原理的位置。这里有两个假设:

  1. 没有转义字符,例如'Sam\'ple text'.
  2. :( 就在您的字符串之后。如果不是,则您需要进行前瞻。
  3. + 要求字符串中至少有一个字符。所以 'a':( 有效但 '':( 无效。如果要允许空字符串,请使用 * 而不是 +

'([^']+)':\(