如何返回正则表达式中字符串的前5位数?
例如,如果我输入以下文本:
15203 Main Street Apartment 3 63110
我怎么能只返回"15203".
我正在使用C#.
这不是真正的单一正则表达式方法解决的问题 - 正则表达式语言并不是特别适用于它.假设您正在用真实语言编写代码(而不是使用正则表达式的一些错误的嵌入式使用),您可能也可以这样做(perl中的示例)
# Capture all the digits into an array
my @digits = $str =~ /(\d)/g;
# Then take the first five and put them back into a string
my $first_five_digits = join "", @digits[0..4];
Run Code Online (Sandbox Code Playgroud)
要么
# Copy the string, removing all non-digits
(my $digits = $str) =~ tr/0-9//cd;
# And cut off all but the first five
$first_five_digits = substr $digits, 0, 5;
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因你真的被困在一场比赛中,你可以访问捕获缓冲区以及将它们重新组合在一起的方法,那么wdebeaum的建议就可以了,但是我很难想象你能做什么的情况这一切,但无法访问其他语言设施:)
这将取决于您的Regex风格和编码语言(C#,PERL等),但是在C#中,您将执行以下操作
string rX = @"\D+";
Regex.replace(input, rX, "");
return input.SubString(0, 5);
Run Code Online (Sandbox Code Playgroud)
注意:我不确定Regex是否匹配(这里的其他匹配可能更好),但是基本上因为Regex本身不会“替换”任何东西,仅匹配模式,所以您必须查找任何非数字字符; 匹配后,您需要将其替换为空字符串的语言版本(在C#中为string.Empty或“”),然后获取结果字符串的前5个字符。