回答
這將取決於你的正則表達式的味道和編碼語言(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