我在這個簡單的正則表達式中遇到了最糟糕的時間。拆分字母和數字之間的空格
例輸入:
Cleveland Indians 5, Boston Redsox 4
我想在,
和字母和數字之間的空間分割
輸出示例:
Cleveland Indians
5
Boston Redsox
4
這裏是我有什麼到目前爲止,但它仍然包括數字。
/,|\s[0-9]/
我在這個簡單的正則表達式中遇到了最糟糕的時間。拆分字母和數字之間的空格
例輸入:
Cleveland Indians 5, Boston Redsox 4
我想在,
和字母和數字之間的空間分割
輸出示例:
Cleveland Indians
5
Boston Redsox
4
這裏是我有什麼到目前爲止,但它仍然包括數字。
/,|\s[0-9]/
如果您將它分成兩個分組 - 一個在逗號+空格處,然後一個將分組名稱與分數分開 - 可能會更清晰一些,尤其是如果您必須添加更多選項前逗號太(真實世界的數據變得混亂!):
scores = "Cleveland Indians 5, Boston Redsox 4"
scores.split(/,\s*/).map{|score| score.split(/\s+(?=\d)/)}
=> [["Cleveland Indians", "5"], ["Boston Redsox", "4"]]
得到的名單列表是一個更有意義的分組了。
"Cleveland Indians 5, Boston Redsox 4".split(/\s*(\d+)(?:,\s+|\z)/)
# => ["Cleveland Indians", "5", "Boston Redsox", "4"]
1)
str = "Cleveland Indians 15, Boston Red Sox 4"
phrases = str.split(", ")
phrases.each do |phrase|
*team_names, score = phrase.split(" ")
puts team_names.join " "
puts score
end
--output:--
Cleveland Indians
15
Boston Red Sox
4
。
2)
str = "Cleveland Indians 15, Boston Red Sox 4"
pieces = str.split(/
\s* #A space 0 or more times
(\d+) #A digit 1 or more times, include match with results
[,\s]* #A comma or space, 0 or more times
/x)
puts pieces
--output:--
Cleveland Indians
15
Boston Red Sox
4
第一分割的是「15」,並且第二分割是「4」 - 與包含在結果中的分數。
。
3)
str = "Cleveland Indians 15, Boston Red Sox 4"
str.scan(/
(
\w #Begin with a word character
\D+ #followed by not a digit, 1 or more times
)
[ ] #followed by a space
(\d+) #followed by a digit, one or more times
/x) {|capture_groups| puts capture_groups}
--output:--
Cleveland Indians
15
Boston Red Sox
4
如何在'分裂,然後'空間?最後的元素將是數字,第一個X將是團隊的名稱。這個或從空間的最後一個索引開始工作。 –