1. ホーム
  2. スクリプト・コラム
  3. 腹筋

15分でわかるvbscriptの正規表現

2022-01-08 12:40:25

vbsでの正規表現

検索する文字列が str="hello world Hello World" であると仮定する。

1 - ルールは基本的にdosのfindstrと同様です。微妙な違いがあります。もしルールに迷ったら、cmdのfindstrの説明を見てください。
2 - どのように動作するのですか?
a - RegExp クラスを作成します。
set reg=new RegExp

b - クラスの属性
reg.pattern - 正規表現で検索テンプレートを作成する
例:reg.pattern="hello"
reg.global=true --- strですべてを置き換えるか、最初にマッチしたものだけを置き換えるか決定します。
reg.replace(str, "x")---str の hello を x で置き換える。
reg.ignorecase=true---大文字・小文字を区別しないことを示す。

c - クラスのメソッド

set matches=reg.execute(str)---method executeは、マッチからなるセットオブジェクトを作成します。
このセットオブジェクトにアクセスするには、for each ... next というステートメントを使用します。
コレクション内の各オブジェクトは、次の2つのプロパティを持ちます。
属性1 firstindex属性です。
属性2 値属性
のようなものです。

strong@foreverstrong:~/darknet_model_validation/coco_detection_evaluation/cocoapi/PythonAPI$ make
python setup.py build_ext --inplace
running build_ext
building 'pycocotools._mask' extension
creating build
creating build/common
creating build/temp.linux-x86_64-2.7
creating build/temp.linux-x86_64-2.7/pycocotools
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g - fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/home/strong/.local/lib/python2.7/site-packages/numpy/core/include -I ... /common -I/usr/include/python2.7 -c . /common/maskApi.c -o build/temp.linux-x86_64-2.7/.. /common/maskApi.o -Wno-cpp -Wno-unused-function -std=c99
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g - fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/home/strong/.local/lib/python2.7/site-packages/numpy/core/include -I ... /common -I/usr/include/python2.7 -c pycocotools/_mask.c -o build/temp.linux-x86_64-2.7/pycocotools/_mask.o -Wno-cpp -Wno-unused-function - std=c99
x86_64-linux-gnu-gcc: error: pycocotools/_mask.c: No such file or directory
x86_64-linux-gnu-gcc: fatal error: no input files
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Makefile:3: recipe for target 'all' failed
make: *** [all] Error 1

最後に、上記をまとめると、以下のように完全なプログラムになります。

strong@foreverstrong:~/darknet_model_validation/coco_detection_evaluation/cocoapi/PythonAPI$ pip install cython
Collecting cython
  Downloading https://files.pythonhosted.org/packages/fe/d6/a097bd9913cc0fc974b968f5586d3f0609f46ca58b2aae3b8dfd51c1fe18/Cython-0.28. 2-cp27-cp27mu-manylinux1_x86_64.whl (3.3MB)
    100% |████████████████████████████████| 3.3MB 499kB/s 
Installing collected packages: cython
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 345, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 323, in clobber
    shutil.copyfile(srcfile, destfile)
  File "/usr/lib/python2.7/shutil.py", line 83, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/cython.pyc'
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

正規表現は何度見ても泥臭い。
実は、正規表現を学ぶには、実践で学ぶのが一番なんです。
/findstrは dosのFindstrは正規表現検索です。vbsにもあります。 {vbsにもあります。 以下のアプレットは、vbsで書かれた学習用プログラムです。
正規表現のグローバル属のみ選択されました。グローバル属とは?使ってみればわかる。
ここでは、空虚な言葉のことを言っているのです。
また、正規表現のルールはどこを見ればいいのでしょうか? dos findstr /?
このパッケージを使えば、10分もあれば正規表現が何なのか理解できると思います。
単純な表現だけではありません。
以下のコードをコピーして、regtest.vbsという名前で保存すればOKです。

strong@foreverstrong:~/darknet_model_validation/coco_detection_evaluation/cocoapi/PythonAPI$ sudo pip install cython
[sudo] password for strong: 
The directory '/home/strong/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/strong/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the If executing pip with sudo, you may want sudo's -H flag.
Collecting cython
  Downloading https://files.pythonhosted.org/packages/fe/d6/a097bd9913cc0fc974b968f5586d3f0609f46ca58b2aae3b8dfd51c1fe18/Cython-0.28. 2-cp27-cp27mu-manylinux1_x86_64.whl (3.3MB)
    100% |████████████████████████████████| 3.3MB 516kB/s 
Installing collected packages: cython
Successfully installed cython-0.28.2
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

strong@foreverstrong:~/darknet_model_validation/coco_detection_evaluation/cocoapi/PythonAPI$ make
python setup.py build_ext --inplace
run build_ext
cythoning pycocotools/_mask.pyx to pycocotools/_mask.c
building 'pycocotools._mask' extension
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g - fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/home/strong/.local/lib/python2.7/site-packages/numpy/core/include -I ... /common -I/usr/include/python2.7 -c . /common/maskApi.c -o build/temp.linux-x86_64-2.7/.. /common/maskApi.o -Wno-cpp -Wno-unused-function -std=c99
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g - fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/home/strong/.local/lib/python2.7/site-packages/numpy/core/include -I ... /common -I/usr/include/python2.7 -c pycocotools/_mask.c -o build/temp.linux-x86_64-2.7/pycocotools/_mask.o -Wno-cpp -Wno-unused-function - std=c99
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/pycocotools
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-func

今回の記事はこれだけです。今後、スクリプトのホームが増えることを期待します。