什么是正则表达式来返回较长字符串中两个字符之间的子字符串?

Bri*_*ian 1 regex perl

我在Perl中有一个字符串,如:" Full Name (userid)"我只想返回用户ID(" ()" 之间的所有内容).

在Perl中,正则表达式会做什么?

Bra*_*ert 7

这将匹配\w" ("和" )" 内的任何word()字符

\w匹配单词字符(字母数字或_),不仅[0-9a-zA-Z_]是非罗马脚本中的数字和字符.

my($username) = $str =~ /\((\w+)\)/;
# or
$str =~ /\((\w+)\)/;
my $username  = $1;
Run Code Online (Sandbox Code Playgroud)


如果你需要它s///,你可以用$1或得到变量\1.

$str =~ s/\((\w+)\)/$1:\1/; # pointless example
Run Code Online (Sandbox Code Playgroud)


如果你想捕捉所有可能性,这些将更好地工作:

my($username) = $str =~ /\(([^\)]+)\)/;
# or
my($username) = $str =~ /\((.+?)\)/;
Run Code Online (Sandbox Code Playgroud)


如果您的正则表达式开始变得复杂,我建议您了解该/x选项.

my($username) = $str =~ / \(  ( [^\)]+ )  \) /x;
Run Code Online (Sandbox Code Playgroud)


perldoc perlre有关更多信息, 请参阅.

如果你刚刚开始学习正则表达式,我建议你阅读perldoc perlretut.

  • 假设他不需要`()`我的回答是正确的. (2认同)