我有一种模式的字符串,例如
1. ABC No 5
2. PQR - XYZ
3. ABC (PQR)
有人可以指定一个正则表达式,它仅且仅删除屏幕开头的数字和句点并保持屏幕的其余部分不变吗?
- 从
1.
_1. ABC No 5
- 从
2.
_2. PQR - XYZ
等等
我有一种模式的字符串,例如
1. ABC No 5
2. PQR - XYZ
3. ABC (PQR)
有人可以指定一个正则表达式,它仅且仅删除屏幕开头的数字和句点并保持屏幕的其余部分不变吗?
1.
_1. ABC No 5
2.
_2. PQR - XYZ
等等
这是一个应该起作用的替换表达式。
s/^\d+\.//
您没有提及您使用的是什么语言,因此实现将根据语言/API 公开正则表达式搜索和替换的方式而有所不同。例如,如果您一次处理一个输入行,在 PHP 中,您可以这样做:
$myVar = preg_replace('/^\d+\./', '', $myVar);
在java中你可以这样做:
myVar = myVar.replaceFirst("^\\d+\\.", "");
Perl:
while(<>) {
print $_ unless /[^-0-9]/
}
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)
in Perl
$cadena ="1111. ABC No 5";
$cadena =~ s/^[\d\.]+//;
print $cadena;