正则表达式Perl期间报价

Maj*_*son 2 regex perl match period

在Perl中使用regex尝试N + 1次后:我遇到以下问题:我需要检索这个:

  232310..1.3      3213   2.4  "$250 For My jacket" (2012)
Run Code Online (Sandbox Code Playgroud)

我试图通过以下方式检索它:

if ( $line=~m/^\s+(\d+|\.+)\s+(\d+)\s+(\d+|\.+)\s+(\^"&(\w*|\s*|\D*)"$)\s*\((\d+)\s*/){
        $ID=$1;
        $Amount=$2;
        $Size=$3;
        $Item=$4;
        $Year=$5;
Run Code Online (Sandbox Code Playgroud)

这是行不通的

cod*_*ict 6

(\d+|\.+)表示一个或多个数字或一个或多个句点.但你想要的是([\d.]+)指一个或多个数字或句号.

类似的问题也出现了捕获大小和项目的问题.你也错误地使用了start anchor(^)和end anchor($).

你可以试试:

^\s+([\d.]+)\s+(\d+)\s+([\d.]+)\s+"([^"]+)"\s*\((\d+)\s*
Run Code Online (Sandbox Code Playgroud)

看见