如何使用正則表達式我會採取像「收視率 - 小星級評級 - 4 field_stars_rating csm_review」字符串和使用gsub它只返回「評級-4」,其中4可以是任何數字?任何我使用的替換隻是部分位正則表達式替換一切,但特定的字符串正則表達式
回答
而不是試圖取代所有的單詞的位置或想要匹配的數位的位置後,更好的方法是match子模式貫穿整個字符串。
string.match(/\b[a-z]+-\d+\b/i)
說明:
詞邊界不消耗任何字符。它斷言,一方面有一個字的字,另一方面則沒有。
\b # the boundary between a word char (\w) and not a word char
[a-z]+ # any character of: 'a' to 'z' (1 or more times)
- # '-'
\d+ # digits (0-9) (1 or more times)
\b # the boundary between a word char (\w) and not a word char
gsub
這裏是錯誤的選擇。它將使更多的意義,做這樣的事情:
"ratings-small star rating-4 field_stars_rating csm_review".match(/\brating-\d\b/).to_s
因爲你要找的字符串的具體部分,它更有意義,直接爲搜索。
先手連字符後的數字,使用此:
"ratings-small star rating-4 field_stars_rating csm_review".match(/\brating-(\d)\b/)[0]
這真的很好!問題是,我比較新的正則表達式,你能解釋\ b的含義嗎?非常感謝! – user3794461
另外,我怎樣才能使它只返回數字,但仍檢查它是在適當的格式? – user3794461
@ user3794461:'\ b'匹配一個空格。至於獲取號碼,請參閱我的編輯。 – Linuxios
我不會爲這個純正則表達式去,因爲這將使得它非常難以閱讀:
string = "ratings-small star rating-4 field_stars_rating csm_review"
string.split.select {|s| s =~ /^rating-\d$/}.join(' ')
如果您期望只有一個元素:
string[/\brating-\d\b/]
我不確定你的代碼比簡單的正則表達式更容易閱讀:'string [/(rating- \ d +)/,1]'。 –
由於您試圖保留一些字符串,而不是想到h你可以刪除其他任何東西只留下有趣的位,你應該考慮如何提取字符串的相關部分。帶有正則表達式參數的String#[]
方法將是我的選擇:
string = "ratings-small star rating-4 field_stars_rating csm_review"
string[/\brating-\d\b/]
# => "rating-4"
- 1. 字符串替換正則表達式
- 2. 替換字符串正則表達式
- 3. 正則表達式替換字符串
- 4. 正則表達式替換字符串
- 5. 正則表達式替換字符串
- 6. 正則表達式替換字符串
- 7. 正則表達式替換字符串
- 8. 字符串正則表達式替換
- 9. 正則表達式替換字符串
- 10. 字符串替換,正則表達式
- 11. 正則表達式:替換字符串
- 12. 正則表達式替換字符串
- 13. 字符串替換正則表達式
- 14. 正則表達式替換字符串
- 15. 正則表達式替換字符串
- 16. 正則表達式字符串替換。
- 17. 正則表達式字符串替換
- 18. 正則表達式替換字符串
- 19. 字符串使用正則表達式替換正則表達式字符類
- 20. Perl正則表達式用正則表達式的子串替換字符串
- 21. 正則表達式語法(一個特定的字符串+正則表達式)
- 22. 正則表達式特定字符串
- 23. 正則表達式和替換字符串的特定字段
- 24. PHP-MySQLi替換爲正則表達式/正則表達式/正則表達式
- 25. C#正則表達式替換字符串忽略特定字
- 26. 用另一個正則表達式替換正則表達式
- 27. 正則表達式的正則表達式的Java字符串
- 28. Java用於替換特定字符串的正則表達式
- 29. 正則表達式使用sed替換特定的字符串
- 30. C#正則表達式替換忽略特定的字符串
請解釋downvoter? – hwnd
我沒有低調,但*你*需要解釋爲什麼你是一個更好的方法。扔掉代碼沒有解釋就像扔OP的魚。反而教OP如何釣魚。好的答案有代碼並解釋它是如何工作的。 –
@hwnd:現在你停止使用(g)sub,我解開了我的downvote。刪除字符串中的所有內容並不是獲得您要查找的內容的好方法,儘管這是OP最初要求的。 – Linuxios