我有这个正则表达式
@(.*)\((.*)\)
我试图从这个字符串中获得两个匹配
@YouTube('dqrtLyzNnn8') @Vimeo('124719070')
我需要在结束)
后停止,所以我得到两个匹配而不是一个。
答案 0 :(得分:3)
答案 1 :(得分:0)
您可以使用否定的字符类:
@([^()]+)\(([^()]+)\)
答案 2 :(得分:0)
你的正则表达式试图吃掉尽可能多的角色。 看看下一个正则表达式:
echo "@YouTube('dqrtLyzNnn8') @Vimeo('124719070')" |
sed 's/@[a-zA-Z]*(\([^)]*\)[^@]*@[a-zA-Z]*(\([^)]*\).*/\1 \2/'
我不知道确切的要求,你可能更容易从另一个命令开始:
echo "@YouTube('dqrtLyzNnn8') @Vimeo('124719070')" | cut -d\' -f2,4