s9e/regexp-builder-command

控制台命令,可以从字符串列表生成正则表达式。

0.5.3 2023-09-06 14:05 UTC

This package is auto-updated.

Last update: 2024-09-06 16:17:16 UTC


README

概要

build-regexp是一个命令行工具,可以生成匹配给定字符串集的正则表达式。

安装

使用此命令有两种方式。您可以选择下载最新版本的PHAR

$ wget -q https://github.com/s9e/RegexpBuilderCommand/releases/latest/download/build-regexp.phar
$ chmod +x build-regexp.phar
$ ./build-regexp.phar --version
build-regexp 0.4.3

或者,您可以将命令作为Composer依赖项安装

$ composer -q require s9e/regexp-builder-command
$ vendor/bin/build-regexp --version
build-regexp 0.4.3

用法

字符串可以直接在命令调用中指定,也可以通过输入文件指定。以下shell示例显示了如何将它们作为空格分隔的列表传递到命令调用中

$ ./build-regexp.phar foo bar baz
ba[rz]|foo

在以下示例中,我们创建一个文件,每个值独占一行,然后通过infile选项传递文件的名称

$ echo -e "one\ntwo\nthree" > strings.txt
$ ./build-regexp.phar --infile strings.txt
one|t(?:hree|wo)

或者,字符串列表可以以JSON数组的形式传递

$ echo '["foo","bar"]' > strings.json
$ ./build-regexp.phar --infile strings.json --infile-format json
bar|foo

默认情况下,结果直接输出到终端。或者,它也可以通过outfile选项保存到指定的文件中。在以下示例中,我们在检查其内容之前将结果保存到out.txt文件中

$ ./build-regexp.phar --outfile out.txt foo bar baz
$ cat out.txt
ba[rz]|foo

预设

有几个预设可用于生成针对不同引擎的正则表达式。它们确定如何解释输入,以及如何/哪些字符在输出中被转义。以下预设可用:

  • pcrepcre2使用PCRE的转义序列\xhh\x{hh..}转义非打印字符和ASCII码以下的字符。如果指定了u标志,正则表达式在Unicode代码点上进行操作。否则,它在字节上进行操作。
  • javare2在功能上等同于pcre2,并且始终在Unicode代码点上操作。
  • javascript将非打印字符和ASCII码以下之外的字符转义为\xhh\uhhhh\u{hhhhh}。如果不存在u标志,BMP之外的字符将分成代理对。
  • raw不会转义任何字面量。如果指定了u标志,正则表达式在Unicode代码点上操作。否则,它在字节上进行操作,并且不能保证产生UTF-8字符串。

以下示例显示了几个不同预设的结果,以Unicode字符U+1F601和U+1F602作为输入。

$ ./build-regexp.phar --preset pcre "😁" "😂"
\xF0\x9F\x98[\x81\x82]

$ ./build-regexp.phar --preset javascript "😁" "😂"
\uD83D[\uDE01\uDE02]

$ ./build-regexp.phar --preset pcre --flags u "😁" "😂"
[\x{1F601}\x{1F602}]

$ ./build-regexp.phar --preset javascript --flags u "😁" "😂"
[\u{1F601}\u{1F602}]

维护

要生成build-regexp.phar,您需要下载最新的box.phar版本并将其保存到bin目录,然后运行composer build-phar

另请参阅