みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております.
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
単純に日本語に対応してないからのようですが...
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ではサポートしてないようです。
代替案です。
こんなカンジでWEBビューアでJavaScriptの正規表現を実行し、結果が得られます。
戻り値を改行区切りのリストにしたい場合は、以下のように変更
FileMaker.PerformScriptWithOption ('fmBridgIt.Return', JSON.stringify(result), 5);
↓
FileMaker.PerformScriptWithOption ('fmBridgIt.Return', result.join('\n'), 5);
Last edited by qb_dp (2022-05-18 15:21:52)
Offline
himadaneeさん、qb_dpさん、ご返信ありがとうございます。
とりあえずBE_RegularExpressionではできないことがわかったので、
qb_dpさんの代替案、JavaScriptを使う方法を試してみました。
しかし、意図した結果が出ません。「あ」などにマッチするはずが、なぜか存在しない文字列「w」にマッチしてしまいます。
どこがいけないのでしょうか?
アドバイスをお願いします。
キャプチャしたのは、ブラウズモードでの結果、レイアウトでのWebビューアのJavaScript、スクリプト2種類です。
(画像が大きくてすみません)
Offline
引数が ” ダブルクォーテーションに囲まれていて文字列で渡してしまっています。
Offline
qb_dpさん、ありがとうございます。
できました! これでやりたいことが実現できそうです。
Offline
BE_EvaluateJavaScript の方は日本語でも問題ないようです。
BE_EvaluateJavaScript ( "'あabc'.match('^.{2}')" )
結果:あa
Pages: 1
[ Generated in 0.022 seconds, 11 queries executed - Memory usage: 517.09 KiB (Peak: 521.99 KiB) ]