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
空白以外。
意味のあるデータを取り出すときに。
数と値の範囲
[_]
式。(候補)
範囲はマイナスで指定。ロケール...
{_}
数。
範囲はカンマで指定。
フラグの設定
(?m:...)
MULTILINE
CR, LF, CRLF を.でマッチする。
(?s:...)
DOTALL
^, $ を毎行マッチする。
(?i:...)
CASE_INSENSITIVE
大文字と小文字を区別しない。
例
(?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
行毎に処理を区切るならフラグを設定
ダウンロード

4D v11 SQL 正規表現の手引き メールアドレス (~@~.~) URL (https