regex - 匹配目录路径深度的正则表达式
问题描述
我正在尝试使用 bash 脚本匹配不同路径字符串的特定文件夹深度的正则表达式。
我想从packages
例如以下两个级别匹配。/packages/[any-folder-name]/[any-folder-name]/
.
因此,例如,/packages/frontend/react-app/src/index.ts
我想匹配/packages/frontend/react-app/
并将其存储在数组中
array=()
string="/packages/frontend/react-app/src/index.ts"
[[ $string =~ packages/.*/.*/ ]] && array+=(${BASH_REMATCH[0]}
几乎可以工作,但它会返回/packages/frontend/react-app/src/
我已经在这个问题上转了几个小时了。
任何帮助表示赞赏!
解决方案
大概是这样的:
#!/usr/bin/env bash
array=()
string="/packages/frontend/react-app/src/index.ts"
[[ $string =~ packages/([^/]+/){2} ]] && array+=("${BASH_REMATCH[0]}")
解释:
[^/]+
匹配任何不包含/
.
推荐阅读
- c++ - 为什么我的 AVL-Insertion 在大输入后返回分段错误?
- python - Qt 无法在小部件上绘制多个 QRect
- c++ - 如何始终让与内核数量一样多的线程同时运行?
- python - 如何将结果转换为可用作输入的变量列表?
- flutter - 如何在使用 TabBarView 切换选项卡之前发出 http 请求
- reactjs - 无法让 Popover 在对话框中的正确位置显示
- python - 使用 Python 中的 NewsPaper 库将新闻文章抓取到一个列表中?
- python - 按 ID 显示内容 (views.py)
- javascript - 当我在 Repl.it 软件中运行我的代码时,它无法识别我的任何变量
- ios - 是否有显示模态视图指示器的标准方法?