FAQ

为什么 rust regex 比 python re 慢

使用 regex 语法

参考:

忽略行号

-N

忽略文件名

-I

忽略大小写

-i

使用 regex

-e 'my pattern'

特点:

  1. 必须使用单引号包裹
  2. -e 可以多次指定不同的pattern

不使用正则 regex

-F 'my word'

只输出文件名

-l

反向匹配 invert

-v

文件匹配

-g

匹配

-g '*.py'

不匹配

-g '!*.py'

文件类型匹配

-t '匹配的类型' Vs -T '不匹配的类型'

eg:

  1. -t py: 匹配 python 文件

    • 类似实现 rg -g '*.py'
  2. -T py: 不匹配

列举支持的文件类型

–type-list

创建文件类型

–type-add

pretty

-p

利于输出到less 等工具,包含颜色

替换

-r 'replaced text'

使用 $number 或者 ${number} 替换capture

1
echo 'hello there' |rg '(he)llo' -r '${1}y'

注意:

  1. $1word 无效,需要使用 ${1}word
  2. word$1 有效
  3. 输入 $ 字符,需要使用 $$

注意事项

windows 中

  • pattern 只能使用双引号和双引号都可以包裹

正则语法

  1. 使用 rust regexp 语法
  2. 如果使用pcre2 语法, -P/--pcre2

特点:

  1. 支持 python 字符集写法: \d+(?:\.\d+)?G
  2. 支持字符集 [[:digit:]]+ 写法

    • grep 的 extended regexp