用于搜索以特定字母开头的左括号后的任何单词的正确 grep 正则表达式字符串是什么?

用于搜索以特定字母开头的左括号后的任何单词的正确 grep 正则表达式字符串是什么?

在我的一些 python 脚本中,我得到了glob.glob(parent_folder_path + glob_str).这些带有关联文件的行应使用正确的 grep 命令在控制台中打印出来,但到目前为止我不知道如何打印。

用于查找所有 - 行的代码glob.glob如下:

grep --exclude-dir='.history' --exclude-dir='__pycache__' --exclude-dir='.wine' -Rinw /home/andylu/Desktop/Python/Scripts/ -e 'glob.glob'

但这仍然不是我想要达到的精确度。当用作正则表达式字符串时,搜索结果中'glob.glob(p*'仅出现一行。glob.glob()我无法理解这一点,因为(p*给了我结果()

接下来,我尝试了'glob.glob(p.*',确实有效,并向我展示了所有结果glob.glob(parent_folder_path + glob_str)

尽管我设法通过反复试验找到了它,但我想更好地理解 grep 语法。最后一个正则表达式字符串是否有效,因为根据这个备忘单,.代表任意字符且*任意重复次数?

答案1

你的猜测非常接近。在正则表达式中,序列p*.表示“零个或多个字符p,后跟任意字符之一”:

  • *- 零个或多个前面的标记
  • .- 恰好一个字符

正则表达式中更常见的“全局通配符”表示.*“一个或多个任何类型的字符”。

您的猜测有效,因为您的表达式中没有$标记(表示“域结束”)。

在这种情况下,您可能需要这样的表达式/glob\.glob(p.*/

  • glob\.glob(p- 文字字符串glob.glob(p,后跟
  • .*- 至少一种任意类型的字符

为了进一步阐述,例如,如果您想更广泛地匹配对 的所有调用glob.glob(),您可以执行以下操作/glob\.glob\([a-z_+ ]+\)/

  • glob\.glob\(- 文字字符串glob.glob(
  • [a-z_+ ]+- 以下一项或多项:任何字母 az、下划线、a+或空格
  • \)- 字面意思)

相关内容