正则表达式消除模式

时间:2012-12-07 18:19:04

标签: regex

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

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

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

  • 1.
  • 中移除1. ABC No 5
  • 2.
  • 中移除2. PQR - XYZ

4 个答案:

答案 0 :(得分:2)

这是一个应该有效的替换表达式。

 s/^\d+\.//

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

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

在java中你可以这样做:

myVar = myVar.replaceFirst("^\\d+\\.", "");

答案 1 :(得分: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 

使用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)

此处不一定需要正则表达式 -

使用cut

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

使用Awk

$ awk -F. '{print $2}' file
 ABC No 5
 PQR - XYZ
 ABC (PQR)

答案 2 :(得分:0)

Perl中的

$cadena ="1111. ABC No 5";
$cadena =~ s/^[\d\.]+//;
print $cadena;

答案 3 :(得分:0)

的Perl:

while(<>) {
  print $_ unless /[^-0-9]/
}