Regular-Expression
確定係統提供的正則表達式庫
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)
- 如果您指的是
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
給定的 to確定./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
例如),其中一個包含在less
原始碼中(regcomp-local
)。 2. 我認為該表達式指的是系統上可用的任何庫,至少less
在選項的上下文中。auto
建構後,給定的less
二進製文件不會更改其正則表達式實現。 3. 沒有任何。支持的庫是:
- POSIX
regcomp
(在版本字元串中標識為“POSIX”);- PCRE(“PCRE”);
- GNU C 庫
re_compile_pattern
(“GNU”);regcmp
(“V8”);- Unix V8
regcomp
,由系統提供或less
自己的副本(Henry Spencer 的實現;“Spencer V8”);re_comp
(“BSD”)。