Guile色々/POSIX拡張正規表現

変更履歴

概 要

目 次

参考資料

準備

文字列に関する数学的な記法

正規表現の色分けについて

マッチについて

先頭,末尾,境界

POSIX拡張正規表現(POSIX.ERE)

POSIX.EREにおける文字

POSIX.EREの記述形式

POSIX.EREの文法

;; --------------------------------------------------------------------------
;; 拡張正規表現(POSIX extended regular expression):文字列の集合を表現する.
;; --------------------------------------------------------------------------
extended_reg_exp   ::= ERE_branch  
                      |  extended_reg_exp '|' ERE_branch

ERE_branch         ::= ERE_expression  
                      |  ERE_branch ERE_expression

ERE_expression     ::= one_char_or_coll_elem_ERE
                      |  '^'
                      |  '$'
                      |  '(' extended_reg_exp ')'
                      |  ERE_expression ERE_dupl_symbol

one_char_or_coll_elem_ERE 
                     ::= ORD_CHAR
                      |  QUOTED_CHAR
                      |  '.' 
                      |  bracket_expression

ERE_dupl_symbol    ::= '*'
                      |  '+'
                      |  '?'
                      |  '{' DUP_COUNT '}'
                      |  '{' DUP_COUNT ',' '}'
                      |  '{' DUP_COUNT ',' DUP_COUNT '}'
;; --------------------------------------------------------------
;; 通常文字(特殊文字以外の文字)
;; --------------------------------------------------------------
ORD_CHAR   ::= 下記の特殊文字以外の文字
;; --------------------------------------------------------------
;; 特殊文字
;; --------------------------------------------------------------
SPEC_CHAR  ::= '^'         ;; 文字列の先頭
              |  '.'         ;; 任意の文字
              |  '['         ;; ブラケット表現の開始
              |  '$'         ;; 文字列の末尾
              |  '('         ;; グループ化
              |  ')'         ;; グループ化
              |  '|'         ;; 選択(和集合)
              |  '*'         ;; 0回以上の繰り返し(クリーネ閉包)
              |  '+'         ;; 1回以上の繰り返し
              |  '?'         ;; 0回または1回
              |  '{'         ;; 有限回の繰り返し指定の開始
              |  '\'         ;; クォート(エスケープ)
;; --------------------------------------------------------------
;; クォート(エスケープ)された文字(特殊文字を通常文字にする)
;; --------------------------------------------------------------
QUOTED_CHAR  ::= '\^'  |  '\.'  |  '\['  |  '\$'  |  '\('  |  '\)'
                |  '\|'  |  '\*'  |  '\+'  |  '\?'  |  '\{'  |  '\\'
;; --------------------------------------------------------------
;; 繰り返し指定の整数
;; --------------------------------------------------------------
DUP_COUNT   ::= 0以上RE_DUP_MAX以下の整数

ブラケット表現

ブラケット表現の記述形式

ブラケット表現における文字の分類

照合記号表現

等価クラス表現

文字クラス表現

範囲表現

ハイフンについて

ブラケット表現の文法

;; --------------------------------------------------------------
;; ブラケット表現(bracket expression):文字集合を表現する. 
;; --------------------------------------------------------------
bracket_expression ::= '[' matching_list ']'
                      |  '[' non-matching_list ']'

matching_list      ::= bracket_list

non-matching_list   ::= '^' bracket_list

bracket_list       ::= follow_list
                      |  follow_list '-'

follow_list        ::= expression_term
                      |  follow_list expression_term

expression_term    ::= single_expression
                      |  range_expression

single_expression  ::= end_range
                      |  character_class
                      |  equivalence_class

range_expression   ::= start_range end_range
                      |  start_range '-'

start_range        ::= end_range '-'

end_range          ::= COLL_ELEM_SINGLE
                      |  collating_symbol

collating_symbol   ::= Open_dot COLL_ELEM_SINGLE Dot_close
                      |  Open_dot COLL_ELEM_MULTI Dot_close
                      |  Open_dot META_CHAR Dot_close

equivalence_class  ::= Open_equal COLL_ELEM_SINGLE Equal_close
                      | Open_equal COLL_ELEM_MULTI Equal_close

character_class    ::= Open_colon class_name Colon_close
;; --------------------------------------------------------------
;; 照合要素(collating element):
;; --------------------------------------------------------------
COLL_ELEM_SINGLE  ::= メタ文字以外の文字(照合要素)
COLL_ELEM_MULTI   ::= 2文字以上からなる照合要素
;; --------------------------------------------------------------
;; メタ文字(meta characters):
;; --------------------------------------------------------------
META_CHAR   ::= '^'      ;; 文字集合の補集合演算を表す
               |  '-'      ;; 範囲指定
               |  ']'      ;; ブラケット表現の終了

その他色々

ロケールについて

クォート(エスケープ)について

前方参照(back-reference)について

ハット記号(^)やドル記号($)を途中に含む正規表現

(おしまい)