-2

我有一种模式的字符串,例如

1. ABC No 5
2. PQR - XYZ
3. ABC (PQR)

有人可以指定一个正则表达式,它仅且仅删除屏幕开头的数字和句点并保持屏幕的其余部分不变吗?

  • 1._1. ABC No 5
  • 2._2. PQR - XYZ

等等

4

4 回答 4

2

这是一个应该起作用的替换表达式。

 s/^\d+\.//

您没有提及您使用的是什么语言,因此实现将根据语言/API 公开正则表达式搜索和替换的方式而有所不同。例如,如果您一次处理一个输入行,在 PHP 中,您可以这样做:

$myVar = preg_replace('/^\d+\./', '', $myVar);

在java中你可以这样做:

myVar = myVar.replaceFirst("^\\d+\\.", "");
于 2012-12-07T18:21:58.557 回答
0

Perl:

while(<>) {
  print $_ unless /[^-0-9]/
}
于 2012-12-07T18:42:03.627 回答
0

Regex: ^[0-9]+\.

^ # Matches the start of the line

[0-9]* # Matches one or more digits

\. # Matches the period (escaped as . matches anything in regex) and the space 

Using sed:

$ cat file
1. ABC No 5
2. PQR - XYZ
3. ABC (PQR)

$ sed -E 's/^[0-9]+\. //' file
ABC No 5
PQR - XYZ
ABC (PQR)

Regex is not necessarily needed here however -

Using cut:

$ cut -d' ' -f2- file
ABC No 5
PQR - XYZ
ABC (PQR)

Using Awk:

$ awk -F. '{print $2}' file
 ABC No 5
 PQR - XYZ
 ABC (PQR)
于 2012-12-07T18:24:44.737 回答
0

in Perl

$cadena ="1111. ABC No 5";
$cadena =~ s/^[\d\.]+//;
print $cadena;
于 2012-12-07T18:27:19.680 回答