人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Luaのパターン(正規表現)の表記方法について質問です。

下記のような座標に対応するパターンの表記方法について教えて下さい。
16.0S, 17.3W
15.9S, 17.4W
16.2S, 17.5W
15.9S, 17.4W
(15.9s,17.3wから16.2s,17.5wまでの四角のエリア内から得られる座標です。)

Luaで作成されたゲーム内のプラグインで使用する、トリガー部分のパターンを書こうとしています。
( http://www.lotrointerface.com/downloads/info609-1.01.html
得られた座標から、地名を表示したいと思っています。)

当初、正規表現の初心者向けの解説サイトを参考にして、
1(5.9|6.[0-2])S, 17.[3-5]W
と書いたのですが動かず。色々調べた所、lua では | が使えない事までは分かりました。

要領を得ない質問かと思いますが、よろしくお願いします。

●質問者: chicken22
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

色々調べた所、lua では | が使えない事までは分かりました。

string.find 、もしくは、string.match を使おうとしている、ということですよね?

http://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/library.html#string.find
http://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/library.html#string.match

文字列strの先頭から、パターンpatternに合致する部分を探します。


http://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/library.html#pattern

パターンは、string.match関数などで文字列を検索するために使用されるものです。Lua独自のパターンと正規表現が利用できます。

正規表現は_RT_LUA_VERSIONが"1.03"以降のファームウェアで扱うことができます。
...
|の前後のパターンのいずれかに合致する文字列に合致します。

なんか、使えそうですけど。


思うに、パターンを正規表現ではなく、文字列で指定しているんじゃないでしょうか?

x = string.match("15.9S, 17.4W", /1(5\.9|6\.[0-2])S, 17\.[3-5]W/)

ピリオドだけ、¥でエスケープしてますが、質問に書いてある正規表現、ほぼそのままです。
ダブルクォートでくくるのではなく、スラッシュでくくると期待通りになるんじゃないかと思います。。


【追記】

私は、プラグイン(ゲームクライアント内で使用するアプリ)の利用者です。
トリガーの項目に登録する文字列を書こうとしています。

こちらこそ、ごめんなさい。
プログラムを作るわけじゃなくて、設定画面に入力したい、ってことだったんですね。

ソースを読んでみたんですけど、文字列を使う方(Lua 独自の正規表現)しかできないんですね。
Ver 1.04 だと、Main.lua の 1934行目の

local captures=({string.match(string.lower(args.Message),string.lower(Alerts[tmpIndex][8]))});

で、判定しているようなのですけれど、以下のように書き換えれば、Lua 独自のではなく、普通の正規表現が使えるようになるはずです。

local regexp=string.regexp(Alerts[tmpIndex][8], "i");
local captures=({string.match(string.lower(args.Message), regexp)});

# 反則?


chicken22さんのコメント
回答ありがとうございます。 質問の書き方が悪くすみませんでした。 私は、プラグイン(ゲームクライアント内で使用するアプリ)の利用者です。 トリガーの項目に登録する文字列を書こうとしています。 ご指摘を踏まえて色々試してみました。 /1(5%.9|6%.[0-2])S, 17%.[3-5]W/ とスラッシュでくくってみましたがだめでした。 /(a|b)/または(a|b)と書いて試してみましたが動きませんでした。 16%.[0-2]S, 17%.[3-5]W と | を使わず、/でくらない形であればokでした。 他にも、初心者が陥りそうな箇所があればお願い致します。

a-kuma3さんのコメント
>> 質問の書き方が悪くすみませんでした。 << いえ、質問の内容をきちんと読んでない、ぼくが悪いです。 spiq さんの正規表現に対する理解は正しいと思います。 それをふまえて、回答に追記しました。

chicken22さんのコメント
プラグインのソースまで見ていただき、ありがとうございます。 現状では出来ない事がわかり、大変すっきりしました |を使わない文字列で対応しつつ、プラグインの作者さんにも要望を出してみます。 (ゲーム内の複数プレーヤー間の情報共有に使いたいので、公式に対応して頂けた方がありがたいため) 初心者の疑問に丁寧にご対応頂きありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ