私は昨日、次の正規表現を試しましたless
。
^\+1[[:space:]]*$
そしてそれは私にとって効果的でしたgrep
。ではうまくいかなかったless
ので、マンページでサポートされている内容を確認し、以下を発見しました。
/pattern
Search forward in the file for the N-th line containing the pattern. N defaults to 1. The pattern is a regular expression, as recognized by the regular expression library supplied by your system.
The search starts at the first line displayed (but see the -a and -j options, which change this).
私はこの質問をしましたが、/dev/chat
実際にどのライブラリが現在使用されているかを確認する方法は言うまでもありません。私は現在Fedora 30を使用していますが、Linuxに拘束されない答えになることを願っています。
したがって、質問は次のようになります。
- 私のシステムが提供するどの
less
正規表現ライブラリを使用するかをどのように決定しますか? - 私のシステムが提供する正規表現ライブラリはどういう意味ですか?
- 提供された正規表現ライブラリは、他のどのユーティリティやプログラムに影響しますか?
- ご使用のシステムで利用可能な特定の正規表現ライブラリーについて言及している場合は、その正規表現ライブラリーページへのリンクを提供してください(可能であれば)。
ldd
プログラム
[unge@localhost ~]$ ldd "$(command -v less)"
linux-vdso.so.1 (0x00007fff040e0000)
libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007f6733339000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6733173000)
/lib64/ld-linux-x86-64.so.2 (0x00007f67333be000)
ベストアンサー1
less
バイナリを参照している場合は、less --version
どの正規表現実装を使用しているかを知らせます。$ less --version less 487 (GNU regular expressions) Copyright (C) 1984-2016 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less
--with-regex
ビルド時にライブラリは指定された値によって決まります./configure
。--with-regex=LIB select regular expression library (LIB is one of auto,none,gnu,pcre,posix,regcmp,re_comp,regcomp,regcomp-local) [auto]
ビルドログで追跡されます。
これらの実装のいくつかは別々のライブラリ(
pcre
例:)として利用可能であり、他の実装はCライブラリ(gnu
例:)に含まれており、そのうちの1つはless
ソースコード(regcomp-local
例:)に含まれています。less
auto
私はその式が少なくともオプションの文脈でビルドシステムで利用可能なすべてのライブラリを参照していると思います。ビルドされると、与えられたless
バイナリは正規表現の実装を変更しません。まったく。
サポートされるライブラリは次のとおりです。
- POSIX
regcomp
(バージョン文字列で「POSIX」として識別されます)。 - ポリメラーゼ連鎖反応(「PCRE」);
- GNU Cライブラリ
re_compile_pattern
(「GNU」); regcmp
(「V8」);- Unix V8
regcomp
、システム提供、またはless
独自のコピー(Henry Spencerの実装、「Spencer V8」) re_comp
(「BSD」)。