単一のパターンを使用して、luaスクリプトのファイルに含まれる複数の値をキャプチャする

ニメシュワニガスリヤ

YEAR、CITY、COUNTRYの形式のデータを含むテキストファイルがあります。データは、1行に1つのYEAR、CITY、COUNTRYとして書き込まれます。例-:

  • 1896年、ギリシャ、アテネ
  • 1900年、パリ、フランス

以前は、このようにハードコードされたデータを使用していました

local data = {} 

data[1] = { year = 1896, city = "Athens", country = "Greece" }
data[2] = { year = 1900, city = "Paris", country = "France" }
data[3] = { year = 1904, city = "St Louis", country = "USA" }
data[4] = { year = 1908, city = "London", country = "UK" }
data[5] = { year = 1912, city = "Stockholm", country = "Sweden" }
data[6] = { year = 1920, city = "Antwerp", country = "Netherlands" }

次に、ファイルから行を読み取り、値をプライベートナレッジベース "local data = {}"に取得する必要があります。

ファイル内のデータから単一のパターンを使用して複数の値をキャプチャする方法を理解することはできません。

これまでの私のコードは

local path = system.pathForFile( "olympicData.txt", system.ResourceDirectory )
 
-- Open the file handle
local file, errorString = io.open( path, "r" )
 
if not file then
    -- Error occurred; output the cause
    print( "File error: " .. errorString )
else
    -- Read each line of the file
    for line in file:lines() do
        local i, value = line:match("%d")
        table.insert(data, i)
        
    -- Close the file
    io.close(file)
    
end
 
file = nil
子豚

あなたが次のような行を読んだとすると

1896, Athens, Greece

キャプチャを使用して、目的の値を簡単に取得できます。

https://www.lua.org/manual/5.3/manual.html#6.4.1

キャプチャ:パターンには、括弧で囲まれたサブパターンを含めることができます。それらはキャプチャについて説明します。一致が成功すると、キャプチャに一致するサブジェクト文字列の部分文字列が保存(キャプチャ)され、後で使用できるようになります。キャプチャには、左括弧に従って番号が付けられます。たとえば、パターン「(a *(。)%w(%s *))」では、「a *(。)%w(%s *)」に一致する文字列の部分が最初のキャプチャとして格納されます(したがって、番号は1です); 「。」に一致する文字 は番号2でキャプチャされ、「%s *」に一致する部分の番号は3です。

特別な場合として、空のキャプチャ()は、現在の文字列位置(数値)をキャプチャします。たとえば、文字列「flaaap」にパターン「()aa()」を適用すると、3と5の2つのキャプチャがあります。

local example = "1896, Athens, Greece"
local year, city, country = example:match("(%d+), (%w+), (%w+)")
print(year, city, country)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ExcelVBAマクロを使用して特定の領域のスクリーンショットをキャプチャして同じファイルに保存する

分類Dev

.txtファイルにユーザーIDとパスワードがあります。ファイル内のクレデンシャルを使用して複数のユーザーにメールを送信するスクリプトを作成したい

分類Dev

SDWEBIMAGEのサーバーに保存されている画像の一意のURLを使用して、アプリケーションディレクトリ(キャッシュ)で一意の画像ファイルパスを取得します

分類Dev

複数のディレクトリをスキャンし、ファイルを探して新しい名前にコピーするスクリプト

分類Dev

CSVファイルからのキャプチャデータには、新しいCSVファイルに保存するAPIリクエストの変数が含まれています

分類Dev

パンダを使用してヘッダーを含まないCSVファイルを読み取り、最初の列のみのデータをキャプチャして削除を実行するにはどうすればよいですか?

分類Dev

複数のファイルからパラメータと値をキャプチャします

分類Dev

Bashスクリプトでsedを使用して、ログファイルの「var」変数に含まれる文字列パターンを削除したい

分類Dev

rsync のインクルードとエクスクルードを使用して、分散した一連のファイルをキャプチャする方法は?

分類Dev

Excel-見出しと値を含むテキストとして複数のデータ列を1つのセルにキャプチャします

分類Dev

タイプスクリプトエラーのあるマングース仮想関数-包含矢印関数は、暗黙的にタイプ 'any'を持つ 'this'のグローバル値をキャプチャします

分類Dev

シェルスクリプトを使用して、指定したパターンの後にファイルに複数の行を挿入する

分類Dev

バックアップアーカイブ全体をスキャンせずに、deja-dupを使用して単一のファイルを復元する

分類Dev

Bashスクリプトのファイル拡張子を認識する正規表現パターンが圧縮ファイルをキャプチャするのに正確ではありません

分類Dev

2つのパターン間で複数のグループを検索してキャプチャする

分類Dev

2つのパターン間で複数のグループを検索してキャプチャする

分類Dev

スクリプトのターミナルログをファイルにキャプチャするにはどうすればよいですか?

分類Dev

シェルスクリプトを作成してディレクトリを再帰的にスキャンし、名前パターンに基づいて特定のファイルをGitに追加するにはどうすればよいですか?

分類Dev

パターンを使用してスクリプトに引数として複数のテキストファイルを渡す

分類Dev

シリーズの行インデックスと列名を使用してDataFrame値をキャプチャする

分類Dev

警告:タイルのメモリ制限を超えました。一部のコンテンツが描画されず、ChromeDriverSeleniumを使用して長いページをレンダリングしているときにスクリーンショットをキャプチャできない場合があります

分類Dev

シェルスクリプトを使用して、複数のcsvファイルを単一のcsvファイルに追加する

分類Dev

タイプスクリプトを使用して特定のチャネルにメッセージを送信する

分類Dev

オプションのキャラクターのリストを使用して、キャプチャ以外のグループを追加できますか?

分類Dev

Javaの正規表現を使用して複数行のパターンをキャプチャするにはどうすればよいですか?

分類Dev

クエリパラメータとしてタイムスタンプを追加するよりも、ファイル名にハッシュを含める方がキャッシュに適しているのはなぜですか?

分類Dev

正規表現を使用して複数のパターンをキャプチャする方法は?

分類Dev

Visual StudioIDEを使用せずに複数のDLLファイルを含むプロジェクトを単一のEXEにコンパイルする

分類Dev

Rでリーフレットとシャイニーを使用してマップをフィルタリングする-複数の値の属性

Related 関連記事

  1. 1

    ExcelVBAマクロを使用して特定の領域のスクリーンショットをキャプチャして同じファイルに保存する

  2. 2

    .txtファイルにユーザーIDとパスワードがあります。ファイル内のクレデンシャルを使用して複数のユーザーにメールを送信するスクリプトを作成したい

  3. 3

    SDWEBIMAGEのサーバーに保存されている画像の一意のURLを使用して、アプリケーションディレクトリ(キャッシュ)で一意の画像ファイルパスを取得します

  4. 4

    複数のディレクトリをスキャンし、ファイルを探して新しい名前にコピーするスクリプト

  5. 5

    CSVファイルからのキャプチャデータには、新しいCSVファイルに保存するAPIリクエストの変数が含まれています

  6. 6

    パンダを使用してヘッダーを含まないCSVファイルを読み取り、最初の列のみのデータをキャプチャして削除を実行するにはどうすればよいですか?

  7. 7

    複数のファイルからパラメータと値をキャプチャします

  8. 8

    Bashスクリプトでsedを使用して、ログファイルの「var」変数に含まれる文字列パターンを削除したい

  9. 9

    rsync のインクルードとエクスクルードを使用して、分散した一連のファイルをキャプチャする方法は?

  10. 10

    Excel-見出しと値を含むテキストとして複数のデータ列を1つのセルにキャプチャします

  11. 11

    タイプスクリプトエラーのあるマングース仮想関数-包含矢印関数は、暗黙的にタイプ 'any'を持つ 'this'のグローバル値をキャプチャします

  12. 12

    シェルスクリプトを使用して、指定したパターンの後にファイルに複数の行を挿入する

  13. 13

    バックアップアーカイブ全体をスキャンせずに、deja-dupを使用して単一のファイルを復元する

  14. 14

    Bashスクリプトのファイル拡張子を認識する正規表現パターンが圧縮ファイルをキャプチャするのに正確ではありません

  15. 15

    2つのパターン間で複数のグループを検索してキャプチャする

  16. 16

    2つのパターン間で複数のグループを検索してキャプチャする

  17. 17

    スクリプトのターミナルログをファイルにキャプチャするにはどうすればよいですか?

  18. 18

    シェルスクリプトを作成してディレクトリを再帰的にスキャンし、名前パターンに基づいて特定のファイルをGitに追加するにはどうすればよいですか?

  19. 19

    パターンを使用してスクリプトに引数として複数のテキストファイルを渡す

  20. 20

    シリーズの行インデックスと列名を使用してDataFrame値をキャプチャする

  21. 21

    警告:タイルのメモリ制限を超えました。一部のコンテンツが描画されず、ChromeDriverSeleniumを使用して長いページをレンダリングしているときにスクリーンショットをキャプチャできない場合があります

  22. 22

    シェルスクリプトを使用して、複数のcsvファイルを単一のcsvファイルに追加する

  23. 23

    タイプスクリプトを使用して特定のチャネルにメッセージを送信する

  24. 24

    オプションのキャラクターのリストを使用して、キャプチャ以外のグループを追加できますか?

  25. 25

    Javaの正規表現を使用して複数行のパターンをキャプチャするにはどうすればよいですか?

  26. 26

    クエリパラメータとしてタイムスタンプを追加するよりも、ファイル名にハッシュを含める方がキャッシュに適しているのはなぜですか?

  27. 27

    正規表現を使用して複数のパターンをキャプチャする方法は?

  28. 28

    Visual StudioIDEを使用せずに複数のDLLファイルを含むプロジェクトを単一のEXEにコンパイルする

  29. 29

    Rでリーフレットとシャイニーを使用してマップをフィルタリングする-複数の値の属性

ホットタグ

アーカイブ