Windows grep无法使用regexr表达式

时间:2013-12-20 20:48:24

标签: regex windows grep

RegExr上从YouTube播放列表网站源代码中提取/watch?v=something_until_&,然后输入此正则表达式。

/watch\?v=(?:(?!&).)*

例如:/watch?v=8j1GYEJSQKs

但是将其作为Windows grep命令输入不起作用。

grep "/watch\?v=(?:(?!&).)*" source.txt > links.txt

我只是得到类似的东西:

grep "/watch?v=" source.txt > watch.txt

但这会输出找到/watch?=

的整行代码

grep正则表达式与RegExr上的正则表达式有何不同?

3 个答案:

答案 0 :(得分:3)

grep默认使用BRE,这意味着它不支持look-behind / ahead。

使用grep -P然后重试,使用PCRE

答案 1 :(得分:2)

仅使用grep -o

输出文件的匹配部分

这就是区别:

$ echo "test abc test" | grep "a.*c"
test abc test
$ echo "test abc test" | grep -o "a.*c"
abc

答案 2 :(得分:1)

您的正则表达式使用了不必要的负面预测,默认情况下不支持。

试试这个:

/watch\?v=[^&]+