これを解決する方法があります。ここでは、私が過去に同様のことをやった方法は次のとおりです。
str = '01.02.2016 10:35:49 8998775 New York 3:35 0,00 0,00'
/(\S+) (\S+) (\d+) (.+) (\S+) (\S+) (\S+)/.match(str).captures
# => ["01.02.2016", "10:35:49", "8998775", "New York", "3:35", "0,00", "0,00"]
str = '01.02.2016 10:35:49 8998775 Chicago 3:35 0,00 0,00'
/(\S+) (\S+) (\d+) (.+) (\S+) (\S+) (\S+)/.match(str).captures
# => ["01.02.2016", "10:35:49", "8998775", "Chicago", "3:35", "0,00", "0,00"]
あなたはフィールドは通常、あなたがあなたの利点にそれらを使用することができます区切られた空間を知っているので。
あなたはもう少しフィールドを検証する必要がある場合:
str = '01.02.2016 10:35:49 8998775 New York 3:35 0,00 0,00'
/([\d.]+) ([\d:]+) (\d+) (\D+?) ([\d+:]+) ([\d,]+) ([\d,]+)/.match(str).captures
# => ["01.02.2016", "10:35:49", "8998775", "New York", "3:35", "0,00", "0,00"]
str = '01.02.2016 10:35:49 8998775 Chicago 3:35 0,00 0,00'
/([\d.]+) ([\d:]+) (\d+) (\D+?) ([\d+:]+) ([\d,]+) ([\d,]+)/.match(str).captures
# => ["01.02.2016", "10:35:49", "8998775", "Chicago", "3:35", "0,00", "0,00"]
時々私が使用したものを、よりテンプレートのように:
str = '01.02.2016 10:35:49 8998775 New York 3:35 0,00 0,00'
/((?:\d{2}\.){2}\d{4}) ((?:\d{2}:){2}\d{2}) (\d+) (\D+?) (\d+:\d+) ([\d,]+) ([\d,]+)/.match(str).captures
# => ["01.02.2016", "10:35:49", "8998775", "New York", "3:35", "0,00", "0,00"]
str = '01.02.2016 10:35:49 8998775 Chicago 3:35 0,00 0,00'
/((?:\d{2}\.){2}\d{4}) ((?:\d{2}:){2}\d{2}) (\d+) (\D+?) (\d+:\d+) ([\d,]+) ([\d,]+)/.match(str).captures
# => ["01.02.2016", "10:35:49", "8998775", "Chicago", "3:35", "0,00", "0,00"]
:
\d{2}
手段"2桁"
(?:\d{2}\.)
は「グループとして2桁と.
を考慮したが捕捉しない(」記憶「)を意味し、それを。
(?:\d{2}\.){2}
手段 『は二度それを行うすべてのことに加えて、次のを覚えている』。
((?:\d{2}\.){2}\d{4})
意味」パターンは、それは彼らが繰り返し回数を考え出すの問題だ考え出しされると。ソース場合は4桁の数字」。
あなたはパターンの残りの部分をうまくできることを知って。
利点がありますt extが後で変更されると、数値を微調整するのはかなり簡単です。そして、これは正規表現の力です。繰り返すパターンがあるときは素晴らしいです。
正規表現は壊れやすく、エンジンの解析方法がわからない場合はのようになります。コードをスローダウンすることができます。代わりにDamien'sのようなものを使って、split
を使用して文字列を分解し、次にshift
とpop
という都市を残しました。
あなたが取得するテキストファイルが毎回同じ形式になるかどうかを特定する必要があります。あなたのテキストファイルのパターンを見ると、正規表現を使って数字部分を 'New York'まで切り捨て、それを切り捨てて残りのデータを処理することができます。 –
ありがとうございましたお互いに別々の数字? – Jes