【发布时间】:2020-09-23 03:01:30
【问题描述】:
我正在尝试为 git 提交消息强制执行某种消息格式。 正则表达式应强制消息以大写字符开头,并且第一个单词是命令式。
我目前正在使用这个正则表达式:^[A-Z]\(?!.*ed\).*$
有效:
- 添加新文件
- 更新角色模型
无效:
- 添加了新文件
- 添加新文件
- 添加了新文件
- 更新的角色模型
- 更新角色模型
虽然所有只有正则表达式的工具似乎都接受这个正则表达式,但 bash 不接受。
ed 排除部分似乎是问题所在:(?!.*ed)
bash 正则表达式不支持负向预测吗?
这是我的 bash 脚本:
msg="Add new file"
if [[ $msg =~ ^[A-Z](?!.*ed).*$ ]]; then
echo "Correct"
else
echo "Wrong"
fi
谢谢!
【问题讨论】:
-
bash 中没有 lokahead
-
请看这个答案 => stackoverflow.com/questions/30905017/…