如何创建Perl正则表达式以删除第一个"<"之前的所有字符?

Tho*_*ens 1 regex perl

我目前有这个:tr/[.]+(?=<)//d它应该删除所有字符(由...表示[.]+),直到第一个"<",因为我正在使用一个积极的前瞻.但由于某些原因,它是删除所有".""<"从字符串.

为了记录,我没有使用正则表达式处理HTML或XML.

Dev*_*tas 6

在[]中用作字符类时,字符的含义会发生变化.[.]没有意义,真的,不同于.所以 .在这种情况下从字面上解释.

我认为这应该工作得很好:

$text =~ s/^.*?</</s; 
Run Code Online (Sandbox Code Playgroud)


Sin*_*nür 6

你不想要tr.

#!/usr/bin/perl

use strict;
use warnings;

while ( <DATA> ) {
    last unless /\S/;
    s/^.+?</</;
    print;
}

__DATA__
a < b < c
a < b < c
Run Code Online (Sandbox Code Playgroud)

  • 替换运算符,`s ///`. (2认同)