INI ファイルの読み書きページを更新しました。
INI ファイルの読み書き – Paepoi
セクションを見つける正規表現に最初戸惑った。
EXP = r'^\[\w+\]$'
でイケると思ったけど文字列に半角スペースがあると認識できない。
半角スペースを使うなで済ませようとも思ったけど。
EXP = r'^\[[^\]]+\]$'
そうだ「閉じブラケット以外の文字列なら何でもいい」にすれば!
こんなアホな思いつきに対応できる正規表現ってやはり面白い。
とほほの正規表現入門 – とほほのWWW入門
ところで、とほほさんで見た「ブラケット内は記号の意味を失う」なんですが。
#! /usr/bin/env python3
import re
# [..] にマッチさせる正規表現
EXP = r'^\[[^\]]+\]$'
# EXP = r'^\[[^]]+\]$' # Python OK
a = ['[test]', '[test2]', '[test3] ', ' [test4]', '[test 5]']
for s in a:
if re.search(EXP, s):
print(s)
Python
#! /usr/bin/env php
<?php
// [..] にマッチさせる正規表現
$EXP = '/^\[[^\]]+\]$/';
// $EXP = '/^\[[^]]+\]$/'; # PHP OK
$a = ['[test]', '[test2]', '[test3] ', ' [test4]', '[test 5]'];
foreach ($a as $s) {
if (preg_match($EXP, $s))
echo $s.PHP_EOL;
}
?>
PHP
#! /usr/bin/gjs
// [..] にマッチさせる正規表現
const EXP = /^\[[^\]]+\]$/;
//const EXP = /^\[[^]]+\]$/; // Gjs NO
let a = ['[test]', '[test2]', '[test3] ', ' [test4]', '[test 5]'];
for (let s of a) {
if (EXP.test(s)) {
print(s)
}
}
Gjs ダメだった。
JavaScript エンジンは複数あるので全部かどうかは試していないけど。
エスケープすれば全部イケたのでブラケット内もエスケープしたほうがいいかと。