所以我試圖找到所有可能的貨幣價值。
我需要找到類似的東西
1000 億英鎊 1 億美元 30p 1 億歐元 1000 億歐元
等等
到目前為止我有
(?:[\£\$\€]?\{1}[,\d] .?\d*[p|m|(bn)][euros]?)
但我似乎無法讓它作業。請幫忙
這目前沒有找到任何給定的貨幣值,我已經嘗試過 regex101.com 并且我似乎無法解釋為什么它不會捕獲任何值
uj5u.com熱心網友回復:
轉義第一個花括號可能不是您想要的。洗掉反斜杠后,您會注意到有些不對勁。
因此,您要確保貨幣符號僅出現一次,并且僅在出現時才出現。所以我建議從你的第一個目標中創建一個捕獲組并使整個組不貪婪
([\£\$\€]{1})?
修復此問題已捕獲所有包含數字的值。捕獲貨幣表示為單詞的值,我只會在您的最后一組中添加空格并使用星號*而不是?使正則運算式看起來像這樣
(([\£\$\€]{1})?[,\d] .?\d*[p|m|(bn)][ euros]*)
最后,我會讓 p|m|... 組變得不貪婪(可能你可能希望它不貪婪),所以我也會在那里打一個問號。所以最終的正則運算式可能看起來像這樣
(([\£\$\€]{1})?[,\d] .?\d*[p|m|(bn)]?[ euros]*)
編輯
看完評論之后,讓我們通過更換只接受有效號碼[,\d] .?\d*與(\d |\d{1,3}(,\d{3})*)(\.\d )?
這時,你可能只想頁上明確匹配| M |億,你能做到這一點使用(bn|m|p)?的,而不是[p|m|(bn)]?
最后你必須捕捉字母的正確順序的詞歐元(S)并考慮領先的空間,( euros?)?所以你的“最終”正則運算式可能看起來像這樣(([\£\$\€]{1})?(\d |\d{1,3}(,\d{3})*)(\.\d )?(bn|m|p)?( euros?)?)
現在您已經對正則運算式有了足夠的了解,并且可以根據自己的喜好隨意擴展或限制它。
uj5u.com熱心網友回復:
到目前為止,最好的正則運算式是:(([\£$\€]{1})?[\d] .?\d*[p|m|(bn)]?[ euros]*)
與 JPO 的回答略有不同,但這仍然令人遺憾地抓住了年份和百分比。我不確定如何確保這些被排除在外
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354295.html
標籤:正则表达式
