您的正則表達式確實而不是給你聲稱它的結果。
s/([\$])([0-9.])([million])/ $2 $3 dollars/g;
隨着/x
修改,我們可以添加空白(即使換行和註釋)的模式來提高可讀性的幫助。你的模式可以被重新寫爲
s/([\$]) # match a literal $ and capture that as $1
([0-9.]) # match ONE digit or a dot and capture as $2
([million]) # match ONE character of 'm', 'i', 'l', 'o', 'n'
# and capture as $3
/$2 $3 dollars/gx;
沒有辦法$100 million
匹配這個模式並導致.2 million
。可能的輸入是 $3i
,$.o
或$9m
。他們會給3 i dollars
,. o dollars
和9 m dollars
。
你所尋找的是這樣一種模式:
s/\$ # a literal '$'
([\d.]+) # one or more digits or dots, like e.g. '99.5',
# captured as $1
\s+ # one or more whitespace
(million) # the literal text 'million', captured as $2
/$1 $2 dollars/gx;
(或者,作爲一個班輪:s/\$([\d.]+)\s+(million)/$1 $2 dollars/g;
)
注意$2
在這種情況下總是是million
和你也可以將其重寫爲s/\$([\d.]+)\s+million/$1 million dollars/g;
(在million
附近省略()
)。
如果你有一個問題,您的代碼,那麼你需要清楚地表明你的計劃,你的輸入和輸出數據以及您需要的輸出。如果你還沒有寫任何東西,那麼你至少應該嘗試一下:Stack Overflow不是免費的編程工作。 – Borodin
我們不是在這裏寫你的代碼,我們不是魔術師來預測你的代碼,你有什麼嘗試,什麼是錯的。請包括您嘗試過的以及不能正常工作的特定問題,幷包含代碼,錯誤和錯誤行。請記住,我們不是在這裏發佈教程,也不是在這裏編寫代碼。編輯你的問題,幷包括我說的和你的問題**可能**會被回答。 –
另外,你確定它是'$'與'eur',但不是'€',歐元與美元,而不是美元? – choroba