在我的一些 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+
或空格\)
- 字面意思)