正则表达式停止某些角色

时间:2015-04-18 09:29:10

标签: regex

我有这个正则表达式

@(.*)\((.*)\)

我试图从这个字符串中获得两个匹配

@YouTube('dqrtLyzNnn8') @Vimeo('124719070')

我需要在结束)后停止,所以我得到两个匹配而不是一个。

See example on Regexr

3 个答案:

答案 0 :(得分:3)

成为lazy?):

@(.*?)\((.*?)\)

DEMO

答案 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