我试图写一个脚本使用Android shell(与Busybox)扫描一些。xml文件提取信息,然而,我被困在一些优化。
不应该,例如,
(ax)b
与
axbxc
不;当我尝试在Android(4.2.2,与Busybox 1.20.2,如果它有关系?)上执行此操作时。
echo axbxc > sdcardtest.txt
grep "(ax)b" sdcardtest.txt
不返回任何值,而
grep "axb" sdcardtest.txt
返回
axbxc
同样,不该
(?>ax)b
return axbxc ?(这是我想要应用的实际优化)
是什么导致了这个问题?另外,有没有人知道Busybox使用的是什么正则表达式引擎,这样我就可以专门研究一下了?
要在grep(和busybox grep)中启用扩展正则表达式,您需要使用grep -E
或egrep
(egrep
是grep -E
的快捷方式)。
我已经用busybox grep测试过了,这两种方法都像预期的那样工作,并且匹配你的正则表达式。
至于(?>ax)b
—只有当您可以使用grep -P
(支持Perl兼容的正则表达式)时,这才会起作用。但是,busybox grep不支持此开关,因此向前查找和向后查找匹配将无法工作。