回答
这将取决于你的正则表达式的味道和编码语言(C#,PERL等),但在C#中你会做这样的事情
string rX = @"\D+";
Regex.replace(input, rX, "");
return input.SubString(0, 5);
注:我不知道这一点正则表达式匹配(这里的其他人可能会有更好的),但基本上,因为正则表达式本身不会“替换”任何东西,只会匹配模式,所以您必须查找任何非数字字符。一旦匹配了,就需要用空字符串的语言版本替换它(string.Empty或C#中的“”),然后获取结果字符串的前5个字符。
您可以分别捕获每个数字,然后将它们放在一起,例如,在Perl中:
$str =~ /(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)/;
$digits = $1 . $2 . $3 . $4 . $5;
我不认为正则表达式是你想要的最好的工具。
正则表达式匹配的模式...你正在寻找的模式是“a(纽约州)数字”
你的逻辑外部的模式是“五场”。
因此,您要么循环播放前五位数字匹配,要么捕获五位数字和merge them together。
但看看那个Perl示例 - 那不是一种模式 - 它是一种重复五次的模式。
你可以通过正则表达式来做到这一点吗?就像解析XML - 你可能会,但它不是正确的工具。
不知道这是由正则表达式最好解决,因为它们用于字符串匹配,并且通常不用于字符串操作(以我的经验)。但是,您可以拨打电话: strInput = Regex.Replace(strInput,“\ D +”,“”); 删除所有非数字字符,然后只返回前5个字符。
如果你只是想要一个直接的正则表达式,为你做所有这些,我不确定它存在没有以类似的方式使用正则表达式类如上。
这实际上不是那种通过单一正则表达式理想解决的问题 - 正则表达式语言并不是特别为表示。假设你在真实的语言编写代码(而不是一些拙劣的嵌入式使用正则表达式),你可以做也许(在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];
或
# 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;
如果由于某种因为你真的被困在一个单一的比赛中,并且你有权访问捕获缓冲区并将它们放回到一起,那么wdebeaum的建议工作得很好,但我很难想象一个情况,你可以做到这一点,但无法访问其他语言设施:)
一种不同的方法 -
#copy over
$temp = $str;
#Remove non-numbers
$temp =~ s/\D//;
#Get the first 5 numbers, exactly.
$temp =~ /\d{5}/;
#Grab the match- ASSUMES that there will be a match.
$first_digits = $1
要得到这些数字,应该是:$ temp =〜/(\ d {5})/ – Toto 2010-07-27 08:46:30
结果=〜S/^(\ d {5})*/$ 1/
替换以数字开头0-9的任何文本(\ d)正好5个{5},后面有任何数目的任何数字'*',其中$ 1是包含在()中的内容,即前五位数字。
如果你想要任何前5个字符。
结果=〜s/^({5})。*/$ 1/
使用任何编程语言,使用的是评估这一点。
即。
regex.replace(text, "^(.{5}).*", "$1");
- 1. 如何前使用正则表达式
- 2. 正则表达式返回
- 3. 正则表达式正则表达式返回的值正则表达式
- 4. bash,正则表达式,返回匹配的正则表达式
- 5. 正则表达式 - 如何用正则表达式除去8位数字
- 6. .match()用正则表达式返回null
- 7. 如何使用正则表达式在特定前缀之后返回文本?
- 8. 帮助修改正则表达式返回位数
- 9. 如何获取正则表达式在字符串之前返回数字
- 10. 正则表达式Java,返回整行?
- 11. 正则表达式返回条件组
- 12. grep正则表达式返回全行
- 13. 正则表达式只返回字母
- 14. 正则表达式返回结果
- 15. 返回子串与正则表达式
- 16. 正则表达式返回null
- 17. java正则表达式返回false
- 18. 正则表达式无分组返回
- 19. 正则表达式返回无(python)
- 20. MongoAlchemy正则表达式不返回
- 21. 如何仅使用正则表达式获得前两位数字
- 22. 如何使用正则表达式在.htaccess中使用正则表达式mod_rewrite
- 23. 正则表达式正则表达式正则表达式使用正则表达式,但不是与Python
- 24. 如何在Python中使用正则表达式来返回这些数字?
- 25. 前瞻正则表达式
- 26. 正则表达式前瞻
- 27. 正则表达式在比赛前返回单词
- 28. 返回文件名无正则表达式的正则表达式
- 29. 正则表达式可以返回匹配项的位置吗?
- 30. 如何使用Python正则表达式
您可能对特定编程语言的解决方案感兴趣;你应该报告你正在使用哪种编程语言。 – kiamlaluno 2010-07-27 14:35:13
如果输入的格式会改变,那么您可能需要考虑使用字符串操作,而不是模式匹配。 – 2010-07-27 15:11:49