我試圖用正則表達式從分號分隔的字符串中刪除令牌。一個例子字符串如下所示:Perl正則表達式替換問題
Field1=Blah;Field2=Bluh;Field3=Dingdong;Uid=John;Pwd=secret;Field4=lalali
Field1=Blah;Field2=Bluh;Field3=Dingdong;Uid=John;Pwd=secret;Field4=lalali;
所以我想刪除「UID」和「密碼」,在單獨的命令令牌,如不刪除任何尾隨令牌(如字段4應保持在結束)。
我現在的嘗試是要做到:
$mystring =~s /Uid=.+;//i;
這將產生
Field1=Blah;Field2=Bluh;Field3=Dingdong;Field4=lalali
這對於第一線工作,但不會用分號二號線工作最後,它在哪裏產生
Field1=Blah;Field2=Bluh;Field3=Dingdong;
並錯誤地刪除Field4。我嘗試了許多變化,像
$mystring =~s /Uid=.+;?//i;
$mystring =~s /Uid=.+;+?//i;
沒有成功。我意識到我需要告訴正則表達式只匹配第一個分號,但我不知道如何。
現在,只要讓我不看完全傻了,我能得到它這樣做的工作:
$mystring =~s /Uid=[^;]+;//i;
,但我仍然不知道爲什麼我不能告訴表達式只匹配到第一個分號...
咦?我有什麼問題嗎?請尊敬downvoter,啓發我...(這不是我需要的代表,我想了解這個答案可能會更有用) – amon