簡體   English   中英

捕獲任意數量的尾隨數字

[英]Capturing arbitrary numbers of trailing digits

我有一些電子表格,人們寫了 13.14 (例如),其中小數點是分隔符而不是數字 - 即最好寫13,1413-14 在 Excel 和read_excel之間,這可以轉換為13.1400000000000019.169999999999999913.279999999999999類的東西。 我需要砍掉9 s(並將數字向上取整)或0..01 s,我認為正則表達式如下:

^(.*)0{3,}[12]$

可能有效,但它所做的只是捕獲三個尾隨的 0 和 1。類似地

^(.*)9{3,}$

沒有捕捉到所有的 9。 我可以准確地指定 0 模式(13 x 0 + 1),但 9 更棘手,因為它們可能有 13 或 14 個。

正則表達式在這里不是正確的工具。 您將無法四舍五入,而您目前無法匹配“129999”之類的內容。 您需要將它們解釋為一個數字,而不是一個字符序列。

事實證明,這個技巧更具體地說明了我想要保留的數字。 我使用負前瞻來確保我只處理“可能的”數字,即我想要 1、2、3、..、10、11 等,但我不想要 09。 零的正則表達式是

^(([1-9](?!0)|[12][0-9])\\.([1-9](?!0)|[12][0-9]))0{3,}[12]$

^(([1-9](?!0)|[12][0-9])\\.([1-9](?!0)|[12][0-9]))9{3,}$

請注意,這是針對 R,所以. 是雙重轉義的,在其他語言中不會。

通過捕獲清理后的數字、將第二個數字增加 1 並將它們連接起來來處理舍入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM