我不是sed的新手,但我也很难相信这个古老的产品中有一个可怕的错误,所以我只是想检查一下我是不是做了一些愚蠢的事情。更多地关注它。
我试图从URL字符串中提取一组数字,但是sed似乎匹配每个字符以及数字范围。
if(!is_user_logged_in()):
add_filter( 'woocommerce_add_to_cart_validation', 'woocommerce_add_cart_myfunction' );
function woocommerce_add_cart_myfunction( $cart_item_data ) {
global $woocommerce;
$numberOfProducts=$woocommerce->cart->cart_contents_count;
if($numberOfProducts > 1){
wc_add_notice(
__( 'You cannot add another product to your cart.'.$numberOfProducts, 'woocommerce' ));
return false;
}
}
endif;
另一方面,egrep很好地解决了这个问题:
我做错了什么,或者我可能在sed看到一个可怕的错误?
编辑2015-10-29 07:35 这似乎并不特定于sed。 Perl给了我同样的问题:
bdetweiler@HPSin:~$ echo "www.blah.com/012345/moreblah.html" | sed -e 's/\([[:digit:]]*\)/!\1/g'
!w!w!w!.!b!l!a!h!.!c!o!m!/!012345/!m!o!r!e!b!l!a!h!.!h!t!m!l!
bdetweiler@HPSin:~$ echo "www.blah.com/012345/moreblah.html" | sed -e 's/\([0-9]*\)/!\1/g'
!w!w!w!.!b!l!a!h!.!c!o!m!/!012345/!m!o!r!e!b!l!a!h!.!h!t!m!l!
bdetweiler@HPSin:~$ echo "www.blah.com/012345/moreblah.html" | sed -e 's/.*\([0-9]*\).*/!\1/g'
!
bdetweiler@HPSin:~$ echo "www.blah.com/012345/moreblah.html" | sed -e 's/.*\([[:digit:]]*\).*/!\1/g'
!
bdetweiler@HPSin:~$ sed --version
sed (GNU sed) 4.2.2
bdetweiler@HPSin:~$ uname -a
Linux HPSin 3.13.0-62-generic #102-Ubuntu SMP Tue Aug 11 14:29:36 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
答案 0 :(得分:3)
至少有一位数字,如果不是,那么一切都对应模式: - )
echo "www.blah.com/012345/moreblah.html" | sed -e 's/\([[:digit:]]\{1,\}\)/!\1/g'