亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教一個正則表達式問題

請教一個正則表達式問題

一只名叫tom的貓 2019-04-19 16:11:11
廠家提供的貨品明細表,類似于下面這種格式:佳潔士強根固齒牙膏90克佳潔士健康專家全優7效牙膏140克佳潔士草本水晶牙膏(清爽薄荷香型)105克佳潔士勁爽清新漱口水250mL現在想匹配克數前面的文字,例如第一行想匹配“佳潔士強根固齒牙膏”,現在用的是這樣的正則:\w+(?=\d+克)但是過濾出來的是"佳潔士強根固齒牙膏9",也就是說零寬斷言中\d+只匹配了一個數字0,頭疼中。剛學正則,請教下是哪地方不對?感謝大家的耐心回答!補充下問題,我是看的正則表達式30分鐘入門教程,用的是作者自己寫的正則工具,也就是.net中的正則。貨品明細是一個excel表,現在要把上面的信息拆成2列,一列是品名“佳潔士強根固齒牙膏”,一列是規格“90克”,先想用vba來拆,但是現學vba時間來不及了,個人比較熟悉php。上面朋友說直接匹配\d+克然后替換成空字符串,我提取品名時就是這樣做的;現在我的思路是反向匹配品名然后替換成空字符串,就得到規格了,折騰不出來。不知道有沒有好的辦法能把兩個分開。汗,轉成excel問題了。。。已經用vba+正則解決了,話說vba的語法還是挺簡單的,因為熟悉PHP,所以采納了用PHP的朋友的答案,謝謝各位的耐心回答!
查看完整描述

2 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

以php代碼為例:
$arr=[];
$arr[]='佳潔士強根固齒牙膏90克';
$arr[]='佳潔士強根固齒牙膏140克';
$arr[]='佳潔士草本水晶牙膏(清爽薄荷香型)105克';
foreach($arras$str){
preg_match('/([^0-9]+)\d+克/',$str,$match);
var_dump($match);
}
輸出結果為:
array(2){
[0]=>
string(32)"佳潔士強根固齒牙膏90克"
[1]=>
string(27)"佳潔士強根固齒牙膏"
}
array(2){
[0]=>
string(33)"佳潔士強根固齒牙膏140克"
[1]=>
string(27)"佳潔士強根固齒牙膏"
}
array(2){
[0]=>
string(53)"佳潔士草本水晶牙膏(清爽薄荷香型)105克"
[1]=>
string(47)"佳潔士草本水晶牙膏(清爽薄荷香型)"
}
是不是你要的?
                            
查看完整回答
反對 回復 2019-04-19
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

stringinput="佳潔士強根固齒牙膏90克";
Regexreg=newRegex(@"(?\d+)克");
Console.WriteLine(reg.Match(input).Groups["val"].Value);
//output90;
你要什么編程語言的?
上面的眼瞎了,不好意思。
stringinput="佳潔士強根固齒牙膏90克";
Regexreg=newRegex(@"(\d+克$)");
Console.WriteLine(reg.Replace(input,""));
//output:佳潔士強根固齒牙膏
                            
查看完整回答
反對 回復 2019-04-19
  • 2 回答
  • 0 關注
  • 345 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號