初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-05-17 22:52:12

salon_hiyake
Member

改行区切りリストから、正規表現にマッチした値を取り出したい

お世話になっております.

BaseElementsの、BE_RegularExpression関数を使って、改行区切りリストから、正規表現にマッチした値を取り出したいのですが、
以下のような式だと、「?」が戻り値となります。
(改行コードの問題なのか、正規表現の問題なのか、判断がつかないです)
どなたか、BaseElementsをお使いの方、いらっしゃいましたら教えていただけないでしょうか?
よろしくお願いします。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
While (
        [
         i=1 ; string = "あ¶い¶う¶" ; NumOfVals=ValueCount(string); result = ""                //初期変数
        ] ;
          i ≤ NumOfVals       ;             //継続条件
        [
        Val = GetValue(string ; i) ;
        MatchReg = BE_RegularExpression ( Val ; "^.{1}" ; "gm" ) ;
        result = result  & If ( IsEmpty ( MatchReg ) ;  "" ; MatchReg  )  & "¶";  //マッチしないときはヌル、マッチすればその文字列を追加
        i = i+1                        //ロジック
               
        ] ;
        result                         //結果
)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

Offline

#2 2022-05-17 23:09:12

himadanee
Guest

Re: 改行区切りリストから、正規表現にマッチした値を取り出したい

単純に日本語に対応してないからのようですが...

#3 2022-05-18 10:06:06

himadanee
Guest

Re: 改行区切りリストから、正規表現にマッチした値を取り出したい

BEのドキュメント
https://docs.baseelementsplugin.com/art … expression
この関数はvオプションがあるので、改行リストを処理するのにWhileは要らないようです。
質問のコードは、各行の先頭1文字を取り出す例ですよね?正規表現自体は単に"^."でいいわけですが
BE_RegularExpression ( "1¶23¶456" ; "^." ; "v" )
で結果は
1
2
4
となりますが、1行目を「あ」に変えると「?」になってしまいます。

上記のドキュメントに詳細はPerlのを見ろとなっててリンク先は
https://perldoc.perl.org/perlre#Regular-Expressions
ですが、Unicodeを処理するには/uとか/aとかのオプションが必要のようで、これらはBEではサポートしてないようです。

#4 2022-05-18 13:51:49

qb_dp
Member

Re: 改行区切りリストから、正規表現にマッチした値を取り出したい

代替案です。
こんなカンジでWEBビューアでJavaScriptの正規表現を実行し、結果が得られます。

戻り値を改行区切りのリストにしたい場合は、以下のように変更
FileMaker.PerformScriptWithOption ('fmBridgIt.Return', JSON.stringify(result), 5);

FileMaker.PerformScriptWithOption ('fmBridgIt.Return', result.join('\n'), 5);

d55d095c9e54995cb625319a128c6503.png

Last edited by qb_dp (2022-05-18 15:21:52)

Offline

#5 2022-05-18 20:46:51

salon_hiyake
Member

Re: 改行区切りリストから、正規表現にマッチした値を取り出したい

himadaneeさん、qb_dpさん、ご返信ありがとうございます。
とりあえずBE_RegularExpressionではできないことがわかったので、
qb_dpさんの代替案、JavaScriptを使う方法を試してみました。

しかし、意図した結果が出ません。「あ」などにマッチするはずが、なぜか存在しない文字列「w」にマッチしてしまいます。
どこがいけないのでしょうか?
アドバイスをお願いします。

キャプチャしたのは、ブラウズモードでの結果、レイアウトでのWebビューアのJavaScript、スクリプト2種類です。
(画像が大きくてすみません)

brouse

brouse

brouse

brouse

Offline

#6 2022-05-18 21:29:00

qb_dp
Member

Re: 改行区切りリストから、正規表現にマッチした値を取り出したい

引数が ” ダブルクォーテーションに囲まれていて文字列で渡してしまっています。

7bdb80a9e05ac1d3b135b0f702ac6d66.png

Offline

#7 2022-05-18 21:49:48

salon_hiyake
Member

Re: 改行区切りリストから、正規表現にマッチした値を取り出したい

qb_dpさん、ありがとうございます。
できました! これでやりたいことが実現できそうです。

Offline

#8 2022-05-18 23:04:23

himadanee
Guest

Re: 改行区切りリストから、正規表現にマッチした値を取り出したい

BE_EvaluateJavaScript の方は日本語でも問題ないようです。
BE_EvaluateJavaScript ( "'あabc'.match('^.{2}')" )
結果:あa

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.022 seconds, 11 queries executed - Memory usage: 517.09 KiB (Peak: 521.99 KiB) ]