190 likes | 290 Views
4D v11 SQL. 正規表現の手引き. 正規表現. 一定の規則性を有する文字列のパターンマッチング. メールアドレス (~@~.~) URL (http s ://~) パス+ファイル名+拡張子 (~¥~.~.~) HTML (<body>~</body>) etc. Match regex. @ , = , Position よりも的確にUnicodeを解析できる. フォーミュラ LAUNCH EXTERNAL PROCESS HTTP マクロ etc. Match regex.
E N D
4D v11 SQL 正規表現の手引き
正規表現 • 一定の規則性を有する文字列のパターンマッチング • メールアドレス (~@~.~) • URL (https://~) • パス+ファイル名+拡張子 (~¥~.~.~) • HTML (<body>~</body>) • etc.
Match regex • @, =, Positionよりも的確にUnicodeを解析できる • フォーミュラ • LAUNCH EXTERNAL PROCESS • HTTP • マクロ • etc.
Match regex パターンの評価のみ...position_l, length_l 抽出, 分解...Positions_al, lengths_al While(Match regex(_,_,i,pos,len)) (Substring) (i:=pos+len) End while
正規表現の基本形 (\s*)(.*?)(\s*)$ 括弧で区切られたグループ。 それぞれがパターンのサブマッチを表している。
正規表現の基本形 (\s*)(.*?)(\s*)$ “ regular expressions ” (“ ”)(“regular expressions”)(“ ”)
基本の正規表現 . なんらかの文字。(コードポイント) CR, LF, CR+LFはカウントしない。 グラフィーム 文字。(書記素クラスタ) 組み合わせ文字, サロゲート等。 \X
基本の正規表現 * 0個以上の意。 *? は控えめにマッチする。 + 1個以上の意。 +? は控えめにマッチする。
基本の正規表現 ^ 入力の冒頭。 毎行の冒頭はカウントしない。 $ 入力の終末。 毎行の終末はカウントしない。
基本の正規表現 \s 空白文字。(タブ, 改行など) 意味のないデータを除外するときに。 \S 空白以外。 意味のあるデータを取り出すときに。
数と値の範囲 [_] 式。(候補) 範囲はマイナスで指定。ロケール... {_} 数。 範囲はカンマで指定。
フラグの設定 MULTILINE CR, LF, CRLF を.でマッチする。 (?m:...) DOTALL ^, $ を毎行マッチする。 (?s:...) CASE_INSENSITIVE 大文字と小文字を区別しない。 (?i:...)
例 (?i:[0-9a-f]{16}) 大文字と小文字を区別しないで、 0から9またはAからZを合計16文字。
置換の正規表現 (\n) n番目のグループで置換する。
例 (“?)(.*?)(\1) 開く引用符があれば、閉じるほうも必要。 なければ両方いらない。
Unicode特有の正規表現 \x{_} Character code 16進数6桁まで指定できる プロパティ 特定の属性を有する文字 \p{_}
まとめ 正規表現はUnicodeを解析するツール @, =, PositionよりもMatch regex 全体のパターンマッチングはLONGINT 抽出, 分解はARRAY LONGINT+While 行毎に処理を区切るならフラグを設定