正規表現ライブラリ bregonig.dll


bregonig.dll Ver.4.20 Copyright (C) 2006-2019 K.Takata

2019/01/30 



bron420.zip (537,749bytes): 


BitBucket 
GitHub 



1.   
2.   
3.   

3.1. bregonig.dll   
3.2. bregonig.dll   
3.3. K2Editor   

4. API  

4.1. Bregexp.dll  API (ANSI/Shift_JIS)  
4.2. Unicode  API  

4.2.1.   
4.2.2.   
4.2.3.   

4.3. bregonig.dll  API  

4.3.1.   
4.3.2.   
4.3.3.   


5. 使  

5.1.   

5.1.1.   
5.1.2. 
5.1.3. 
5.1.4.   
5.1.5.  ()  
5.1.6.   
5.1.7.   
5.1.8.   
5.1.9. 
5.1.10. PCRE/Python   
5.1.11. 
5.1.12. Unicode   

5.2.   
5.3.   
5.4. Bregexp.dll   

6.   

6.1.   
6.2. 
6.3.   

7.   
8.   

8.1. ANSI/Shift_JIS  (Ver.0.xx, Ver.1.xx)  
8.2. Unicode (UTF-16LE)  (Ver.2.0x)  
8.3. Perl 5.14  (Ver.2.50 betaX, Ver.3.00 )  

9.   
10. 
11. 

1. 


 Tatsuo Baba Bregexp.dll Windows  Perl 使

  (Oniguruma)  (Onigmo, Oniguruma-mod)  Bregexp.dll 使 (look-behind) (?<=), (?<!) (?imsx-imsx:)POSIX  [:ascii:] \p{Ascii} (?<name>), \k<name> 使

 K2Editor 使 K2Regexp.dll 使 Bregexp.dll for SAKURA K2Editor  bregonig.dll 使

2. 



Windows XP / Vista / 7 / 8 / 8.1 / 10

bregonig.dll  Bregexp.dll 
 

K2Editor r.1.5.7 Build 519 (k2regexp.dll)

JmEditor2 Version 2.0.25

 Ver. 1.6.6.0, Ver. 2.0.4.0

Spam Mail Killer Ver.2.28

INCM version 1.23c

ttPage-R Ver.0.98r28

 Ver7.00 + BRegIf.DLL v0,0,2,2

Speeeeed Ver1.43
 


3. 


 32bit 64bit x64 使

3.1. bregonig.dll 


  1.6.0 bregonig.dll bregonig.dll 

 使OS 32bit  32bit  bregonig.dll  64bit  64bit  bregonig.dll 使64bit  bregonig.dll  x64 

3.2. bregonig.dll 


 Bregexp.dll bregonig.dll bregonig.dll  bregexp.dll 

3.3. K2Editor 


 K2Editor  k2regexp.dll  K2Editor.exe K2Regexp.dll  Bregexp.dll  Bregexp.dll 


4. API

4.1. Bregexp.dll  API (ANSI/Shift_JIS)


 Bregexp.dll  API 使


BMatch()

BSubst()

BTrans()

BSplit()

BRegfree()

BRegexpVersion()


 Bregexp.dll for SAKURA  API 使


BMatchEx()

BSubstEx()

4.2. Unicode  API


 bregonig.dll Ver.2 4.1.  API Unicode (UTF-16LE)  API 使

4.2.1. 


 UNICODE, _UNICODE  src.7z  bregexp.h bregonig.lib  Unicode  API 使Bregexp.dll  bregexp.h 
#define UNICODE
#define _UNICODE
#include "bregexp.h"

4.2.2. 


 LoadLibrary(), GetProcAddress() 使API  W使GetProcAddress() Unicode  API 
hBregOnig = LoadLibrary(_T("bregonig.dll"));
pBMatch = GetProcAddress(hBregOnig, "BMatchW");
pBRegfree = GetProcAddress(hBregOnig, "BRegfreeW");

4.2.3. 



 BREGEXP 使Unicode  API  ANSI  API 

 BRegfree() Unicode  ANSI 

k2regexp.dll  Unicode  API 使Ver.1.xx 使

4.3. bregonig.dll  API


 Ver.3 2 API  Unicode  ANSI 

  API  m/pattern1/options  s/pattern1/pattern2/options  API pattern1, pattern2, options  API  "/"  "/" 

  API  API 

4.3.1. 

#include "bregexp.h"

int BoMatch(const TCHAR *patternp, const TCHAR *optionp,
            const TCHAR *strstartp,
            const TCHAR *targetstartp, const TCHAR *targetendp,
            BOOL one_shot,
            BREGEXP **rxp, TCHAR *msg);


patternp
NUL  (5.1. )
 NULL 使

optionp
NUL  ()
 patternp  NULL  NULL 

strstartp
NULL 

targetstartp
NULL 

targetendp
NULL 

one_shot



TRUE

 調

FALSE

 


rxp
BREGEXP  (rx) 
  BREGEXP  (rx)  NULL 
 使BRegfree() 

msg
NULL 
  NUL  BREGEXP_MAX_ERROR_MESSAGE_LEN (= 80) 






0 







rx->nparen
 ()  (*1)

rx->start[0]
 (*2)

rx->end[0]
 (*2)

rx->start[n]
$n  (1 <= n<= nparen) (*2) (*3)

rx->end[n]
$n  (1 <= n<= nparen) (*2) (*3)



(*1)


(*2)


(*3)
 NULL   "(a)|(b)"  "b" $1  rx->start[1] == rx->end[1] == NULL 



Perl 5.8 



i


m
^, $ 

s
. 

g


x
使
 


ANSI API 



k
Shift_JIS (Bregexp.dll )

8
 UTF-8  (bregonig.dll )
 
Unicode API  UTF-16LE   

Perl 5.14 



a
ASCII
 \d, \s, \w, POSIX  ASCII 

u
Unicode  

Unicode API (UTF-16LE):

\d, \s, \w, POSIX  Unicode 

ANSI API (8  (UTF-8)):

\d, \s, \w, POSIX  Unicode 

ANSI API (k  (Shift_JIS)):

\w  POSIX 

ANSI API (8, k (ASCII)):

\d, \s, \w, POSIX  ASCII 
 


d
(Default:  u)

l
(Locale:  u)







R
LFCRLF  (bregonig.dll )
 ., ^, $, \Z 



4.3.2. 

#include "bregexp.h"

int BoSubst(const TCHAR *patternp, const TCHAR *substp, const TCHAR *optionp,
          const TCHAR *strstartp,
          const TCHAR *targetstartp, const TCHAR *targetendp,
          BCallBack callback,
          BREGEXP **rxp, TCHAR *msg);


patternp 
NUL  (5.1. )
 NULL 使

substp 
 (NUL ) (5.3. )
 NULL 使

optionp 
NUL  (4.3.1. )
 patternp  NULL    NULL 

strstartp 
NULL 

targetstartp
NULL 

targetendp 
NULL 

callback 
(4.3.3. )
  NULL 

rxp 
BREGEXP  (rx) 
  BREGEXP  (rx)  NULL 
 使BRegfree() 

msg 
NULL 
  NUL  BREGEXP_MAX_ERROR_MESSAGE_LEN (= 80) 






0 







rx->outp


rx->outendp



  NUL  NUL rx->outendp 
 outp, outendp  NULL 

 BoMatch() 

 BoMatch()  BoSubst() patternp, optionp  NULL substp BoSubst()  BoMatch() 

 BoSubst() patternp  NULL  substp  NULL  patternp  patternp  NULL  substp  NULL 

4.3.3. 


 g 1調
typedef BOOL (__stdcall *BCallBack)(int kind, int value, ptrdiff_t index);


kind 
0 

value


index




TRUE


FALSE


5. 使


  Bregexp.dll Bregexp.dll for SAKURA  API 


BMatch(), BMatchEx(), BSplit()

/pattern1/options
 m/pattern1/options
 

BSubst(), BSubstEx()

s/pattern1/pattern2/options  

BTrans()

tr/pattern3/pattern4/options
 y/pattern3/pattern4/options (Ver.3 )  


 Bregexp.dll  Perl m//, s///, tr///, y///  / 使\x01 使

 Perl s<ptn1>{ptn2}opt pattern1  pattern2  Bregexp.dll 

 pattern2, options  bregonig.dll Onigmo  Bregexp.dll  Perl 

 pattern3, pattern4 Bregexp.dll 使使 Bregexp.dll \b, \x{HHHH}, \o{nnn}    \v 使Perl 5.10  Ver.2  Bregexp.dll tr/-/x/  256 

5.1. 


 pattern1 Onigmo  ONIG_SYNTAX_PERL  Perl 5.14 使Onigmo   5.1.11. 

 ONIG_SYNTAX_PERL Perl Onigmo  Perl 使 bregonig.dll 使 bregonig.dll 便\g<>  使

  \v 使Perl 5.10  \v  Ver.2 

5.1.1. 基本要素

\ 退避修飾 (エスケープ)
正規表現記号の有効/無効の制御
| 選択子
(...) 式集合 (グループ)
[...] 文字集合 (文字クラス)

5.1.2. 文字

\t水平タブ (0x09)
\n改行 (0x0A)
\r復帰 (0x0D)
\b後退空白 (0x08)
文字集合の中でのみ有効。
\f改頁 (0x0C)
\a鐘 (0x07)
\e退避修飾 (0x1B)
\nnn8進数表現 (符号化バイト値(の一部))
1〜3桁
\xHH16進数表現 (符号化バイト値(の一部))
1〜2桁
\x{HHHH}拡張16進数表現 (コードポイント値)
1〜4桁、あるいは 1〜6桁
\o{nnn}拡張8進数表現 (コードポイント値)
1〜6桁、あるいは 1〜7桁 (Ver.4 以降)
\cx制御文字表現 (コードポイント値)

5.1.3. 文字種、文字の並び、特殊記号

文字種
.任意文字 (改行を除く)
\w単語構成文字
\W非単語構成文字
\s空白文字
\S非空白文字
\d10進数字
\D非10進数字
\p{property-name}
\p{^property-name} (否定)
\P{property-name} (否定)
文字プロパティ (Ver.3 で強化)
全てのエンコーディング:
Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII
UTF-16LE, UTF-8:
Unicode 9.0 に対応。(プロパティ名の一覧は Onigmo の UnicodeProps.txt を参照)
Shift_JIS:
Hiragana, Katakana に加え、以下のプロパティ名に対応。
Han, Latin, Greek, Cyrillic
現バージョンでは、Perl とは異なり、property-name が 1文字の場合でも、{ } を省略することはできません。
文字の並び
\R改行文字 (Linebreak) (Ver.3 以降)
改行1つにマッチします。CRLF も1文字としてマッチします。
UTF-16LE, UTF-8:
(?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}])
ASCII, Shift_JIS:
(?>\x0D\x0A|[\x0A-\x0D])
文字集合内では使用不可
\X拡張書記素クラスタ (eXtended grapheme cluster) (Ver.3 以降、Ver.4 で強化)
Unicode の結合文字等を考慮した1文字にマッチします。
UTF-16LE, UTF-8:
Ver.3: (?>\P{M}\p{M}*)
Ver.4: Unicode Standard Annex #29 UNICODE TEXT SEGMENTATION 参照
ASCII, Shift_JIS:
Ver.3: (?s:.)
Ver.4: (?>\x0D\x0A|(?s:.))
文字集合内では使用不可
特殊記号
\Q次の \E まで、正規表現演算子を抑制します。
\E\Q の効果を終了します。

5.1.4. 量指定子

繰り返し回数の指定

欲張り無欲強欲
(Ver.2 以降)
????+一回または零回
**?*+零回以上
+++++一回以上
{n,m}{n,m}?{n,m}+n回以上m回以下
{n,}{n,}?{n,}+n回以上
{n}{n}?{n}+n

5.1.5. 錨 (アンカー)

^行頭
$行末
\b単語境界
\B非単語境界
\A文字列先頭
\Z文字列末尾、または文字列末尾の改行の直前
\z文字列末尾
\G照合開始位置
(g オプション指定時の置換処理中は、直前の照合終了位置)

5.1.6. 文字集合

文字集合 ([...]) の中で使える演算子類

^...否定 (最低優先度演算子)
x-y範囲 (x から y まで)
[...]集合 (文字集合内文字集合)
..&&..積演算 (^の次に優先度が低い演算子)
[:xxxxx:]
[:^xxxxx:] (否定)
POSIX ブラケット
alnum, alpha, blank, cntrl, digit, graph, lower, print, punct, space, upper, xdigit, word, ascii

5.1.7. 拡張式集合

(?#...)注釈
(?imsxadlu-imsx)
(?^imsxalu-imsx)
孤立オプション (Ver.3 で拡張)
i
大文字小文字照合
m
複数行 (^, $ が文字列中の改行直後・直前にマッチする)
s
単一行 (. が改行にマッチする)
x
拡張形式
a
\d, \s, \w, POSIX ブラケットを ASCII の範囲に限定
aa
(ASCII/非ASCII のマッチを抑制)
d
(デフォルト)
l
(現在のロケール)
u
Unicode
^
d-imsx と同義
i を指定すると、大文字小文字を同一視してマッチを行います。Ver.3 以降では、Unicode だけでなく Shift_JIS でも、全角英字・ギリシャ文字・キリル文字を含めた大文字小文字同一視マッチを行います。
a を指定すると、Unicode API, ANSI API (ASCII/Shift_JIS/UTF-8) に関わらず、\d, \s, \w, POSIX ブラケットのマッチ範囲を ASCII 範囲内に限定します。\p{} については、従来通り ASCII に限定されません。
u を指定すると、\d, \s, \w, POSIX ブラケットのマッチ範囲が従来通りの動作となります。例えば ANSI API で /k オプション (Shift_JIS) を指定した場合、Onigmo のドキュメントに記載の通り、\w は英数字、"_" および 多バイト文字にマッチします。
\b, \B も、この指定の影響を受けます。
現在のバージョンでは aa は、a と同義です。また、l, d は、u と同義です。
(?imsxadlu-imsx:pattern)
(?^imsxalu-imsx:pattern)
式オプション (Ver.3 で拡張)
(pattern)捕獲式集合
(?:pattern)非捕獲式集合
(?=pattern)先読み
(?!pattern)否定先読み
(?<=pattern)戻り読み
(?<!pattern)否定戻り読み
\K保持 (Ver.3 以降)
\K より左側を保持し、それを検索結果 ($&) に含めません。戻り読み (?<=pattern) の別表記と考えることができますが、可変長が使える点が異なります。また、検索対象文字列の途中から検索を開始する場合は、結果が異なる場合があります。(戻り読みの場合は検索開始位置から戻って検索を行うが、\K は戻って検索は行わないため。)
(?>pattern)原子的式集合
(?<name>pattern)
(?'name'pattern)
名前付き捕獲式集合
(?(cond)yes|no)
(?(cond)yes)
条件式 (Ver.3 以降)
(cond) が真であれば yes がマッチし、偽であれば no がマッチします。(cond) には以下のものが使用できます。
(n) (n >= 1)
番号指定の後方参照が何かにマッチしていれば真、マッチしていなければ偽
(<name>), ('name')
名前指定の後方参照が何かにマッチしていれば真、マッチしていなければ偽
現バージョンでは、先読み・戻り読みを条件に指定することはできません。
(?~pattern)非包含オペレータ (Ver.4.10 以降) (実験的、将来的に変更の可能性あり)

5.1.8. 後方参照

\n絶対番号指定参照 (n >= 1)
\k<n>
\k'n'
\g{n}
絶対番号指定参照 (n >= 1)
\k<-n>
\k'-n'
\g{-n}
相対番号指定参照 (n >= 1)
\k<name>
\k'name'
\g{name}
名前指定参照
\k<n+level>
\k<n-level>
\k'n+level'
\k'n-level'
ネストレベル付き後方参照 (絶対番号指定) (n >= 1)
\k<-n+level>
\k<-n-level>
\k'-n+level'
\k'-n-level'
ネストレベル付き後方参照 (相対番号指定) (n >= 1)
\k<name+level>
\k<name-level>
\k'name+level'
\k'name-level'
ネストレベル付き後方参照 (名前指定)

Perl 5.10 互換の \g{...} 形式は、Ver.3 以降。

5.1.9. 部分式呼出し

\g<name>
\g'name'
(?&name)
名前指定呼出し
名前が多重定義されていた場合は一番左の式が呼び出されます。
\g<n>
\g'n'
(?n)
絶対番号指定呼出し (n >= 1)
\g<0>
\g'0'
(?0)
(?R)
パターン全体の再帰呼び出し
(Ver.3 以降)
\g<-n>
\g'-n'
(?-n)
後方相対番号指定呼出し (n >= 1)
\g<+n>
\g'+n'
(?+n)
前方相対番号指定呼出し (n >= 1)
(Ver.3 以降)

Perl 5.10 互換の (?...) 形式は、Ver.3 以降。

5.1.10. PCRE/Python サポート

 以上のパターンに加え、以下の PCRE/Python 互換の名前参照も使用可能です。(Ver.3 以降)

(?P<name>pattern) 名前付き捕獲式集合
(?<name>pattern) 相当
(?P=name) 名前指定参照
\k<name> 相当
(?P>name) 名前指定による部分式呼出し
(?&name) 相当

5.1.11. 未対応機能

 以下の正規表現は、現バージョンでは未対応です。

(?|pattern) ブランチリセット
| による分岐ごとに、後方参照の番号をリセットします。
(?[]) 拡張文字集合
演算可能な文字集合。(現状の bregonig の文字集合でも類似の機能は使用可能。)
\gn 絶対番号指定による後方参照
\g{n} と同等です。
\g-n 相対番号指定による後方参照
\g{-n} と同等です。
\v, \V 垂直空白、非垂直空白
\h, \H 水平空白、非水平空白
その他 \N, \N{name}, \N{U+xxxx}, \C, (?p),
(?{code}), (??{code}), (*VERB:ARG)

5.1.12. Unicode 利用時の検索パターン


 pattern1  Onigmo  Unicode \w, \W, \s, \S, \d, \D POSIX  \d  \p{}, \P{} Onigmo 使 property-name 使 Onigmo 

 Unicode  Shift_JIS Shift_JIS [-] 使Unicode  \p{Han}  Unicode  Unicode 使使

 \x{HHHH} API Shift_JIS  Unicode  \x{HHHH} 


Shift_JIS: \x{82a0}

UTF-16LE, UTF-8: \x{3042}


 Unicode 使1024𥝱()\x{25771} 

 



 : (U+3071)(U+306F)(U+309A)

BSplit()  (//, m//) 1

5.2. 


 options 
k共通文字コードオプション
文字を日本語(Shift_JIS)として扱う (Bregexp.dll 独自拡張)
i検索大文字小文字を区別しない
m検索^, $ が文字列中の改行直後・直前にマッチする
s検索. が改行にマッチする
g置換グローバルな置換
c変換SEARCHLIST を補集合にする
d変換見つかったが置換されなかった文字を削除する
s変換置換された文字が重なったときに圧縮する
x検索拡張正規表現を使用する
a, u,
(d, l)
検索文字セット修飾子 (Ver.3 以降)
詳細は 4.3.1 参照
R検索LF だけでなく、CRLF も改行として扱う (bregonig.dll 独自拡張) (Ver.3 以降)
詳細は 4.3.1 参照

 Bregexp.dll BMatch(), BSubst(), BSplit()  s, x, a, u, R使x  pattern1 pattern2 

 Unicode API  k使

5.3. 


 pattern2 使
\t水平タブ (0x09)
\n改行 (0x0A)
\r復帰 (0x0D)
\b後退空白 (0x08)
\f改頁 (0x0C)
\a鐘 (0x07)
\e退避修飾 (0x1B)
\nnn8進数表現 (符号化バイト値(の一部))
\xHH16進数表現 (符号化バイト値(の一部))
\o{nnn}拡張8進数表現 (コードポイント値) (Ver.4 以降)
\x{HHHH}拡張16進数表現 (コードポイント値)
\cx制御文字表現 (コードポイント値)
\l次の1文字を小文字にする。(Ver.3 以降)
\u次の1文字を大文字にする。(Ver.3 以降)
\L\E までを小文字にする。(Ver.3 以降)
\U\E までを大文字にする。(Ver.3 以降)
\E\L, \U を終了させる。(Ver.3 以降)

Bregexp.dll  \b, \x{HHHH} \nnn 

 Perl \x{HHHH}  Unicode bregonig.dll API Shift_JIS  Unicode 

  \v 使Perl 5.10  Ver.2 

 Ver.3 \l, \u, \L, \U, \E 使 Perl  ASCII 使

 pattern2 使
\n
$n
番号指定参照 (n は 1 以上の 10進整数)
(Perl では、$n の方を推奨している。)
${n}(安全な)番号指定参照 (n は 1 以上の 10進整数)
$&マッチした文字列全体
$+最後にマッチした部分文字列 (Ver.1.40 以降)
\k<name>
\k'name'
名前指定参照 (Oniguruma 準拠)
${name}名前指定参照 (bregonig.dll 独自拡張、暫定仕様)
$+{name}名前指定参照 (Perl 5.10 準拠) (Ver.1.40 以降)
同名で重複定義されている場合は、最も左の結果を返す (Ver.2 以降)
$-{name}[n]名前 + 番号指定参照 (Perl 5.10 準拠) (Ver.1.40 以降)

 Bregexp.dll  \n, $n, $& 使bregonig.dll  ${n}, $+ ${n} s/(hoge.)/${1}2/g  Bregexp.dll s/(hoge.)/$1\x32/g \x32  216

 Perl $`, $', $^N 使Perl  $var bregonig.dll Perl  $0 bregonig.dll 

 Ver.1.40 $+ (a)|([^a]) $+ 使$1  $2 

 Perl ${${1}} bregonig.dll 

 Bregexp.dll pattern2  $  \ bregonig.dll 

 pattern2 Oniguruma  \k<name>, \k'name' bregonig.dll  ${name} Perl 5.10  $+{name}, $-{name}[n] 使(Perl 5.10 )

 Perl  ${name}  $name bregonig.dll 使 ${name} 

 Ver.1.40  Perl 5.10  $+{name}, $-{name}[n] 使$+{name} 使Ver.1.xx  $-{name}[n] 使 nn  0 -1 

pattern2  \nnn 


 Perl nnn \10, \11 \10  \010 () \11  \011 ()  Bregexp.dll nnn  0 8nnn 19Bregexp.dll  \077  \nnn \xHH 使

 bregonig.dll Ver.0.09  Bregexp.dll Ver.0.10  Perl \18 8使Perl  ${1}8  ${18} bregonig.dll  ${18}  Perl 

5.4. Bregexp.dll 



 k() \w  [A-Za-z0-9_] 2Bregexp.dll  k\w  [A-Za-z0-9_] Perl 5.8  Unicode utf8 \w Bregexp.dll  a

使[ ]   [  \[ (Ver.1.30 )

pattern1, pattern2  \c\x Bregexp.dll  Perl Bregexp.dll \c\  '\x1c'  \  x\c\ bregonig.dll  Oniguruma \c\x  \cx pattern3, pattern4 Bregexp.dll 

6. 

6.1. 



Visual Basic  API VB使 Bregexp.dll 使

Onigmo bregonig.dll  Bregexp.dll  API ASCII  Shift_JIS 使 API 使Ver.2  UTF-16LEVer.3  UTF-8 使

bregonig.dll  Bregexp.dll 使

使使

6.2. 


 bregonig.dll 


Ver.1.xx

Perl 5.8 
 ANSI/Shift_JIS 
 

Ver.2.0x

Perl 5.10  Oniguruma 
 Ver.1 UTF-16LE  API 
 

Ver.3.0x, Ver.4.xx

Perl 5.14 
 Ver.2 UTF-8  API x64 

6.3. 



 (|pattern) 

(?[]) (Perl 5.18)



 | 使(Commentz-Walter )
 : How to Implement World Fastest Grep.

 (Unicode ) 

 (pattern2)  \l, \u, \L, \U ASCII 

\v, \V, \h, \H 

7. 


  Visual C++ 2005 Onigmo Onigmo  bregonig 使


 Git 
> git clone https://github.com/k-takata/Onigmo.git
> cd Onigmo
> git checkout bregonig
> build_nmake.cmd
> cd ..
> git clone https://github.com/k-takata/bregonig.git
> cd bregonig\src
> nmake ONIG_DIR=../../Onigmo

8. 

8.1. ANSI/Shift_JIS  (Ver.0.xx, Ver.1.xx)



2006/08/24 Ver.0.01  



Oniguruma 4.3.1 使
 


2006/08/25 Ver.0.02  

k2regexp.dll  BMatch()  one_shot 

 ONIG_SYNTAX_PERL  ONIG_SYNTAX_PERL_NG 使


. (?<=a|bc)

Oniguruma 4.4.0 使
 


2006/08/27  

BMatch()  BSubst()  Bregexp.dll 
 


2006/08/28 Ver.0.03  

K2Editor 

BSplit() 

Oniguruma 4.4.0 使
 


2006/08/29 Ver.0.04  

BTrans() 

BRegexpVersion() 

Oniguruma 4.4.0 使
 


2006/08/30 Ver.0.05  





Oniguruma 4.4.1 使
 


2006/08/31 Ver.0.06  

調

Oniguruma  API 

Oniguruma 4.4.1 使
 


2006/09/02 Ver.0.07  

Ver.0.06 



Oniguruma 4.4.1 使
 


2006/09/04  

Spam Mail Killer 
 


2006/09/06  

DLL  onig_end() 
 


2006/09/07  

INCM 


 


2006/09/09 Ver.0.08  

Ver.0.06 

使使使Perl 
. (?<!(?<=a)b|c)

Oniguruma 4.4.2 使
 


2006/09/12 Ver.0.09  

pattern2  \c\x  pattern1 pattern3, pattern4 
 . \c\[ == \c[ == Ctrl-[ == \x1B (pattern1, 2)
   \c\[ == Ctrl-\ + [ == \x1C\x5B (pattern3, 4)

Oniguruma 4.4.2 使
 


2006/09/14 Ver.0.10   

pattern2  \nnn  Bregexp.dll  Perl subst.cpp 

Oniguruma 4.4.2 使
 


2006/09/14 Ver.0.11  

pattern2  \0nn 

pattern2 使

Ver.0.10  ${n} 使

Oniguruma 4.4.2 使
 


2006/09/16 Ver.0.11a   



Oniguruma 4.4.3 使
 


2006/09/18 Ver.0.11b  

 15KiB 

Oniguruma 4.4.3 使
 


2006/10/20  

Oniguruma 5.0.0 使

Oniguruma 
 


2006/10/27 Ver.1.00  



Oniguruma 5.0.1 使[:word:], \p{Word} 使
 


2006/11/05 Ver.1.01  

Win9x 

Oniguruma 5.0.1 使
 


2006/11/09  

Oniguruma 5.1.0 使
 


2006/11/14 Ver.1.10  

Oniguruma 5.2.0 使[:punct:] 
 


2006/11/22 Ver.1.20  

Oniguruma 5.3.0 使\p{Hiragana}, \p{Katakana} 使
 


2007/01/21 Ver.1.21  

Oniguruma 5.5.2 使
 


2007/06/23 Ver.1.30  

Oniguruma 5.8.0 使pattern1  \k'name' 使

pattern2  \k'name' 使

pattern1  \v 使ONIG_SYNTAX_PERL_NG 使便

pattern1  [a-w&&[^c-g]z] 使ONIG_SYNTAX_PERL_NG 使便

pattern2  \x{HHHH} 使

pattern3,4  \nnn 使Bregexp.dll 

pattern3,4  \x{HHHH} 使

pattern2 \xQQ, \x{12{, ${3{ Perl 
 


2007/06/26 Ver.1.31  

Oniguruma 5.8.0 使 $ 
 


2007/07/15 Ver.1.31a  



bregonig.dll, k2regexp.dll 
 


2007/08/04 Ver.1.32  

 0 BSubst() 

BREGEXP  startp, endp (a)|(b) 

 \v Perl 5.10 

Ver.2.00 

Ver.1.10 

Oniguruma 5.9.0 使
 


2007/08/26 Ver.1.40  

 Ver.2.00 bregexp.h  tchar.h  windows.h 

$+, $+{name}, $-{name}[n] 使

 (pattern1) 使



Oniguruma 5.9.0 使
 


2007/08/28 Ver.1.41  

BRegIf.DLL ;n 使nparens 

Oniguruma 5.9.0 使
 


2007/08/29 Ver.1.41a  



bregonig.dll, k2regexp.dll 
 


2007/09/28 Ver.1.42  

BREGEXP  rsv1  int  INT_PTR bregexp.h  windows.h 64bit 32bit

BSubst() g \G 使Bregexp.dll 

BSubst() 2

Oniguruma 5.9.0 使\G 
 


2008/03/12 Ver.1.43  

Oniguruma 5.9.1 使\G   



pattern1  \k<n> 
 




2008/10/12 Ver.1.44  

BTrans() ch-tom
 


2008/10/15 Ver.1.45   

DLL DLL 使
 


2009/01/17 Ver.1.45  





bsd_license.txt Oniguruma 
 


2010/01/09 Ver.1.46  

Oniguruma 5.9.2 使\G   

(a){2}z  aaz 
 




2011/01/01 Ver.1.47  

Oniguruma 5.9.2 2使\G   

(?<=a).*b  aab 
 http://d.hatena.ne.jp/nurse/20100826#1282810156
 http://redmine.ruby-lang.org/issues/show/3568  





2011/01/10 Ver.1.48  

Oniguruma 5.9.2 3使\G   

使
 . (?<=(?<!A)B)C  





2011/06/04 Ver.1.49  

Oniguruma 5.9.2 4使\G   

/(?<!aa|b)c/i  Aac 
 http://redmine.ruby-lang.org/issues/show/4088  



python  bregonig.dll 
 


2011/08/28 Ver.1.50  

Oniguruma 5.9.2 5使\G   

2 .* 
 




VC++ 2005  swprintf 
 


8.2. Unicode (UTF-16LE)  (Ver.2.0x)



2007/06/23 Ver.2.00 beta1  

Unicode  API 

Oniguruma 5.8.0 使
 


2007/06/26 Ver.2.00 beta2  

Unicode  BTrans() 

ANSI 

Oniguruma 5.8.0 使 $ 
 


2007/06/28 Ver.2.00 beta3 ()

Unicode  BSplit() BSplit()  (//, m//) 1



Oniguruma 5.8.0 使
 


2007/07/17 Ver.2.00 beta4  

pattern2 $+ 使

pattern2 $+{name}, $-{name}[n] 使Perl 5.10 

pattern2 使Perl 5.10 

使Perl 5.10 

使Perl 5.10 

 \v Perl 5.10 

Oniguruma 5.9.0 使
 


2007/08/04 Ver.2.00 beta5  

 0 BSubst() 

BREGEXP  startp, endp (a)|(b) 

BRegexpVersion()  Unicode  API 

Unicode  API  Unicode 

$+  Perl (a)|(b) 

Ver.1.10 

Oniguruma 5.9.0 使
 


2007/08/26 Ver.2.00 beta6  

BSplit() 

Ver.1.xx 

Oniguruma 5.9.0 使
 


2007/08/28 Ver.2.00 beta7  

BRegIf.DLL ;n 使nparens 

Oniguruma 5.9.0 使
 


2007/09/28 Ver.2.00 beta8  

BREGEXP  rsv1  int  INT_PTR bregexp.h  windows.h 64bit 32bit

BSubst() g \G 使Bregexp.dll 

BSubst() 2

Oniguruma 5.9.0 使\G 
 


2008/03/12 Ver.2.00 beta9  

Oniguruma 5.9.1 使\G   



pattern1  \k<n> 
 




2008/10/12 Ver.2.00 beta10  

BTrans() ch-tom
 


2008/10/15 Ver.2.00 beta11   

DLL DLL 使
 


2009/01/17 Ver.2.00 beta11  




 


2010/01/09 Ver.2.00  

Ver.2.00 

Oniguruma 5.9.2 使\G   

(a){2}z  aaz  

\x{XXXXX} 
 




2011/01/01 Ver.2.01  

Oniguruma 5.9.2 2使\G   

(?<=a).*b  aab 
 http://d.hatena.ne.jp/nurse/20100826#1282810156
 http://redmine.ruby-lang.org/issues/show/3568  





2011/01/10 Ver.2.02  

Oniguruma 5.9.2 3使\G   

(?<=a).*b  aab 

使
 . (?<=(?<!A)B)C
 




2011/06/04 Ver.2.03  

Oniguruma 5.9.2 4使\G   

/(?<!aa|b)c/i  Aac 
 http://redmine.ruby-lang.org/issues/show/4088  



python  bregonig.dll 
 


2011/08/28 Ver.2.04  

Oniguruma 5.9.2 5使\G   

2 .* 
 




VC++ 2005  swprintf 
 


2011/11/21 Ver.2.05  

Oniguruma 5.9.2 6使\G   

UTF-16/32  /[\x{0}-X]/i 

x64 
 




2012/11/03 Ver.2.06  

Oniguruma 5.9.2 7使\G 
 https://github.com/k-takata/Onigmo/tree/onig-5.9.2-mod7  

[0-9-a]  [0-9\-a] 




 




test_cp932.py: V2 
 


2013/03/17 Ver.2.07  

Oniguruma 5.9.2 8使\G 
 https://github.com/k-takata/Onigmo/tree/onig-5.9.2-mod8  

/(?<=fo).*/s 
 http://bugs.ruby-lang.org/issues/8023  


 



2013/07/07 Ver.2.08  

Oniguruma 5.9.4 1 for bregonig.dll V2 使
 https://github.com/k-takata/Onigmo/tree/onig-5.9.4-mod1_for_bregonig-v2  

 Oniguruma 5.9.2  5.9.4 

\z 
 http://bugs.ruby-lang.org/issues/8210  




2014/09/13 Ver.2.09  

Oniguruma 5.9.5 2 for bregonig.dll V2 使
 https://github.com/k-takata/Onigmo/tree/onig-5.9.5-mod2_for_bregonig-v2  

 Oniguruma 5.9.4  5.9.5 

使
 https://github.com/k-takata/Onigmo/issues/24  

UTF-16/32  /[a-c#]+\W/ =~ "def#" 

/(?i)\u0149\u0149/ =~ "\u0149\u0149" 
 https://github.com/k-takata/Onigmo/issues/40  

"ab" =~ /(?!^a).*b/ 
 https://github.com/k-takata/Onigmo/issues/44  




8.3. Perl 5.14  (Ver.2.50 betaX, Ver.3.00 )



2011/06/07 Ver.2.50 beta1  

 Ver.2.03 

 API 

Oniguruma 5.9.2 使  

\R, \K, \X 
 




2011/06/08 Ver.2.50 beta2  

Oniguruma 5.9.2 使  

(?&name), (?n), (?-n) 
 




2011/06/12 Ver.2.50 beta3  

Onigmo (Oniguruma-mod) 5.9.2 (3995156) 使
 https://github.com/k-takata/Onigmo  

(?adlu), (?^alu) 

\g{n}, \g{-n}, \g{name} 
 




2011/06/14 Ver.2.50 beta4  

Onigmo (Oniguruma-mod) 5.9.2 (81f52e7) 使
 https://github.com/k-takata/Onigmo  

(?P<name>...), (?P=name), (?P>name) 

Shift_JIS  (?i) 

Unicode API  (?a) 

(?-n) 

Perl 5.10+ 
 




2011/06/15 Ver.2.50 beta5  

Onigmo (Oniguruma-mod) 5.9.2 (5f60f85) 使
 https://github.com/k-takata/Onigmo  

(?R), (?0), (?+n) 

Shift_JIS 使
Han, Latin, Greek, Cyrillic
 




2011/06/19 Ver.2.50 beta6  

Onigmo (Oniguruma-mod) 5.10.0 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.10.0  
 API   

BoMatch(), BoSubst()
 


BTrans() tr///  y/// 使
 


2011/06/25 Ver.2.50 beta7  

Onigmo (Oniguruma-mod) 5.10.1 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.10.1  

(?(cond)yes), (?(cond)yes|no) 

.* 
 


2.50 beta6  API 
 


2011/06/29 Ver.2.50 beta8  

Onigmo (Oniguruma-mod) 5.10.2 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.10.2  

\X 

(?a)  \d, \h, \s 

/.*a/ ==> /^.*a/
 




2011/07/03 Ver.2.50 beta9  

Onigmo (Oniguruma-mod) 5.10.3 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.10.3  

(?a)  \p{} 

/.*a/ ==> /(?:^|\G).*a/
 




2011/07/11 Ver.2.50 beta10

Onigmo (Oniguruma-mod) 5.10.4 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.10.4  



.* 
 




2011/08/16 Ver.2.50 beta11

Onigmo (Oniguruma-mod) 5.10.6 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.10.6  

\g<0>, \g<+n> 

[^x]*x 
 




2011/08/28 Ver.2.50 beta12

Onigmo (Oniguruma-mod) 5.10.6 (d689af8) 使
 https://github.com/k-takata/Onigmo/tree/d689af85c2  



_MSC_VER  LTCG 
 




VC++ 2005  swprintf 

bregexp.h  BREGEXP_MAX_ERROR_MESSAGE_LEN 
 


2011/08/30 Ver.2.50 beta13

JmEditor  NULL 2.50 beta6 rx->parap 
 


2011/09/04 Ver.2.50 beta14

Onigmo (Oniguruma-mod) 5.11.0 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.11.0  

x64 


 


x64 

BoSubst 2.50 beta6 
 


2011/09/10 Ver.2.50 beta15

Onigmo (Oniguruma-mod) 5.11.2 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.11.2  

\R 

(?a) 



Ruby 
 


 API  API  a* 
 


2011/09/18 Ver.3.00 beta1  

 3.00 2.0

Onigmo (Oniguruma-mod) 5.11.3 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.11.3  

.*\Z 

a{n,m} 

\x{} 

ONIG_OPTION_NEWLINE_CRLF 

Unicode \R  \x{85}, \x{2028}, \x{2029} 
 


/R 
 


2011/10/17 Ver.3.00 beta2  

Onigmo (Oniguruma-mod) 5.11.4 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.11.4  

BMH

Sunday's Quick Search
 



 


2011/12/02 Ver.3.00 beta3  

Onigmo (Oniguruma-mod) 5.11.4-9 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.11.4-9-g4ca7590  

UTF-16/32  /[\x{0}-X]/i 

/a{2}/i AA
 




2011/12/24 Ver.3.00 beta4  

Onigmo (Oniguruma-mod) 5.12.0 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.12.0  

Unicode \p{NEWLINE} 

Unicode \p{Print} 

Unicode 6.0 Age (\p{In_XXX})
 


test_cp932.py 

 \l, \u, \L, \U ASCII 

 

test_*.{cpp,py} -> sample_*.{cpp,py}
 

 

crnl.py -> test_crnl.py

test_cp932.py -> test_match.py
 

BoSubst() (test_subst.py)

(sample_bosubst.cpp)

test_*.py  Python 3 
 


2011/12/28 Ver.3.00  

Ver.3.00 

Onigmo (Oniguruma-mod) 5.12.1 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.12.1  

HTML 
 


2012/01/21 Ver.3.01  

Onigmo (Oniguruma-mod) 5.13.0 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.13.0  

Unicode  ISO-8859  /^ss$/i  "\x{DF}" (ß) 





ONIG_SYNTAX_RUBY  \b, \B, POSIX  Ruby 1.9.3 (?d) 
 




2012/02/23  

Shift_JIS 使[-]  [-] 
 


2012/03/30 Ver.3.02  

Onigmo (Oniguruma-mod) 5.13.2 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.13.2  

Unicode 6.1 (5.13.1)

 \b, \B 使(5.13.1)



[a&&b] 1



1
 




2012/11/03 Ver.3.03  

Onigmo (Oniguruma-mod) 5.13.3 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.13.3  

[0-9-a]  [0-9\-a] 


 


JaneXeno 


 


2013/03/17 Ver.3.04  

Onigmo (Oniguruma-mod) 5.13.4 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.13.4  

(?a) 
 http://bugs.ruby-lang.org/issues/7972  

(?i:...) 
 http://bugs.ruby-lang.org/issues/7974  

\Z 
 http://bugs.ruby-lang.org/issues/8001  

/(?<=fo).*/s 
 http://bugs.ruby-lang.org/issues/8023  




2013/07/07 Ver.3.05  

Onigmo (Oniguruma-mod) 5.13.5 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.13.5  

\z 
 http://bugs.ruby-lang.org/issues/8210  


 https://github.com/k-takata/Onigmo/pull/17  

使
 https://github.com/k-takata/Onigmo/pull/20  




2014/09/13 Ver.3.06  

Onigmo (Oniguruma-mod) 5.15.0 for bregonig.dll 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-5.15.0_for_bregonig  

Unicode 7.0 

Oniguruma 5.9.5 

使
 https://github.com/k-takata/Onigmo/issues/24  

/\x{1ffc}/i =~ "\x1ff3" 

UTF-16/32  /[a-c#]+\W/ =~ "def#" 

/(?i)\u0149\u0149/ =~ "\u0149\u0149" 
 https://github.com/k-takata/Onigmo/issues/40  

 \w 使/i 
 https://github.com/k-takata/Onigmo/issues/4  

 /i 
 https://github.com/k-takata/Onigmo/issues/41  

"ab" =~ /(?!^a).*b/ 
 https://github.com/k-takata/Onigmo/issues/44  



 


2016/12/10 Ver.4.00  

Onigmo (Oniguruma-mod) 6.0.0 for bregonig.dll 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-6.0.0_for_bregonig  

GCC  Clang Token Threaded VM 
 https://github.com/k-takata/Onigmo/pull/52  

Unicode 9.0 

Perl  Perl 
 https://github.com/k-takata/Onigmo/issues/74  

Unicode  [[:punct:]] 
 https://github.com/k-takata/Onigmo/issues/42  

使

\X 

\o{OOO} 


 https://github.com/k-takata/Onigmo/issues/68  


 https://github.com/k-takata/Onigmo/issues/65   

 Unicode  case-folding 
 https://github.com/k-takata/Onigmo/issues/18  


 https://github.com/k-takata/Onigmo/issues/48  

MSVC 

 Ruby  Oniguruma 
 


 


2017/01/17 Ver.4.10  

Onigmo (Oniguruma-mod) 6.1.0 for bregonig.dll 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-6.1.0_for_bregonig  


 https://github.com/k-takata/Onigmo/issues/82  

set_bm_skip() 
 https://github.com/k-takata/Onigmo/issues/81  

 .* 使
 https://github.com/k-takata/Onigmo/issues/69  



 


2017/01/29 Ver.4.11

Onigmo (Oniguruma-mod) 6.1.1 for bregonig.dll 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-6.1.1_for_bregonig  

UTF-16LE  (?~\S+) 
 



2017/05/15 Ver.4.12  

Onigmo (Oniguruma-mod) 6.1.2 for bregonig.dll 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-6.1.2_for_bregonig  

 (Ruby r57660)
 https://bugs.ruby-lang.org/issues/13234
 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6181  


 https://github.com/k-takata/Onigmo/issues/87  





2019/01/30 Ver.4.20  

Onigmo (Oniguruma-mod) 6.2.0 for bregonig.dll 使
 https://github.com/k-takata/Onigmo/tree/Onigmo-6.2.0_for_bregonig  

Unicode  (Unicode 11.0.0, Emoji 11.0)


 



 便ID `.`   



9. 


 bregonig.dll  Bregexp.dll  Perl  GPL  Artistic License Artistic License  perl_license.txt, perl_license_jp.txt 

 bregonig.dll  Oniguruma (Onigmo) 使Oniguruma (Onigmo)  BSD  BSD  bsd_license.txt BSD bsd_license.txt  bsd_license.txt 

10. 


 


K.Kosako (Oniguruma)

Tatsuo Baba (Bregexp.dll)

Koyabu Kazuya(K2) (K2Regexp.dll)

 (Bregexp.dll for SAKURA)

11. 



: K.Takata ( )

E-mail: kentkt ATMARK csc DOT jp

URL:  

http://k-takata.o.oo7.jp/

https://github.com/k-takata/bregonig ()
 




Copyright (C) 2006-2019 K.Takata