echo "$(expr "title: Purple Haze artist: Jimi Hendrix" : 'title:\s*\(.*\?\)\s*artist.*' )"
Run Code Online (Sandbox Code Playgroud)
版画
Purple Haze
Run Code Online (Sandbox Code Playgroud)
使用尾随空格,即使我使用的是?懒惰运算符.
我在https://regex101.com/上测试了这个,它按预期工作,bash有什么不同?
您正在使用bash的正则表达式匹配expr.expr它没有" ?惰性运算符",它只实现了基本的正则表达式(在Linux版本中有一些扩展,例如\s对于空格,但不包括类似Perl的惰性运算符).(就此而言,bash也没有.)
如果您不想.*包含尾随空格,请指定它必须以不是空格的字符结尾:
'title:\s*\(.*\S\)\s*artist.*'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |