Regular Expression(正規表現) Part17

2025/12/06(土) 22:50:10.26ID:2DkcA45J
セミコロンはどこいった
2025/12/07(日) 02:42:31.53ID:R0icGBd3
DMARCレコードの末尾はセミコロンなくてもいいからじゃね?
それより修飾子kがなにかきになる
307デフォルトの名無しさん
垢版 |
2025/12/07(日) 07:46:42.62ID:UCYK391B
プログラムでなくて正規表現メモパッド環境での質問でも良いですか
任意の文字をHTMLエンコード(16進数数値文字参照)するコマンドってありますか

文章:正規表現
検索:規
置換:⸨REGEXコマンド⸩
結果:正規表現

的な
308デフォルトの名無しさん
垢版 |
2025/12/07(日) 11:24:43.85ID:DIZ3oEXF
イヤん置換
2025/12/07(日) 14:08:32.54ID:9FE0dLzx
>>306
>DMARCレコードの末尾はセミコロンなくてもいいからじゃね?
なるほどね

>それより修飾子kがなにかきになる
文字のハイライトをしたいときに使うオプションのようだけど
/kが必要になる理由は分からないな
2025/12/07(日) 16:01:19.36ID:W5rWTuKC
使ってるAPI関係の話みたいだよ
-------
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 以降)

options
 k - 文字を日本語(Shift_JIS)として扱うが、Unicode API 利用時は無視される(Bregexp.dll 独自拡張)
-------

hintヒント
正規表現を検索、置換、Grepで利用する場合、「/」をエスケープしたり、「/」で囲ったりする必要はありません。
正規表現キーワードで使う場合は、/text\/css/k のように「/」をエスケープするか m#text/css#k のように書く必要があります。

hint追加情報
検索、置換、Grepでは、正規表現ライブラリに渡す文字列を以下のようにしています。[DELIMITER]は、0xffのバイナリ表記とします。
Unicode版では U+FFFF です。
検索時のオプションは「m[DELIMITER]Pattern[DELIMITER]km」です。
置換時のオプションは「s[DELIMITER]PatternBefore[DELIMITER]PatternAfter[DELIMITER]km」です。
デリミタ相当の文字を検索・置換するにはエスケープが必要です。
また大文字小文字を区別しない場合は最後に「i」が付加されます。
すべて置換で「すべて置換は置換の繰返し」がOFFの場合は「g」が付加されます。
(mオプションが付いていますが、改行をまたいだ検索はできません。)
2025/12/07(日) 16:06:20.28ID:W5rWTuKC
サクラエディタにはUnicode版もあるらしいが、そこでも //k が使われるのかは不明
まあこれをそのままユーザーに指定させるってのもどうかなってのは思う
2025/12/07(日) 19:50:15.24ID:FNtb5kKI
bregoing
2025/12/07(日) 20:01:45.27ID:W5rWTuKC
>>312
上のAPIの説明はbregonig.dll(v4.20)に付属の説明書からの抜き出しだよ
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()
pattern2, options の部分は bregonig.dll が自前で処理を行っており、Onigmo や Bregexp.dll あるいは Perl とは多少仕様が異なっています。(詳細は後述)
Bregexp.dll に比べて、BMatch(), BSubst(), BSplit() で s, x, a, u, R が使えるように拡張されています。なお、x は pattern1 にのみ効果があり、pattern2 には効果はありません。
Unicode API 利用時は k オプションは無視されます。漢字は常に使用可能です。
5.4. Bregexp.dll との非互換点
•オプションで k (日本語モード) を指定すると、\w は [A-Za-z0-9_] だけでなく、2バイト文字(漢字等)にもマッチするようになります。一方、Bregexp.dll では、オプション k の有無に関わらず、\w は [A-Za-z0-9_] と同義です。なお、Perl 5.8 でも、検索対象が Unicode 文字列(utf8 フラグがオン)ならば、\w は多バイト文字にもマッチします。Bregexp.dll と同じ動作にするには、オプション a を指定してください。
•Onigmo 自体は各種文字エンコーディングに対応していますが、bregonig.dll は Bregexp.dll との互換性のため、従来 API では、ASCII と Shift_JIS 以外の文字エンコーディングは使用できません。(新 API を使うことで、Ver.2 以降では UTF-16LE、Ver.3 以降では UTF-8 も使えます。)
2025/12/08(月) 12:26:55.03ID:Uac8TKoK
Bregexp.dllの頃から使われてたオプションっぽいね、20年前にはあったオプションかも
2025/12/08(月) 21:08:56.84ID:Uac8TKoK
2007年08月13日 の投稿に/kを確認
https://sakura-editor.github.io/bbslog/sf/ansi/4937.html#4960

>正規表現キーワード /\b([0-9A-F]{2})+(?=h)?/k

bregonig.dllを導入するときに/kが必要になった可能性もあるのか
しかしこれ以上調べる気にはなれなかった
2025/12/08(月) 21:53:56.42ID:PdAyBLn5
面白いわくわくする
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況