正則表達式提取數字和小數我有一列,我需要從每行的字符串中提取數字。 這些數字可以是小數,也可以不是。
我正在使用這個公式: Regex( :PIPE_LENGTH, "[^(\d+\.\d+)]", "", globalreplace )
例子:
繩子:長度 = 3.5 英寸。由約翰完成。
預期:3.5
實際:3.5..
示例2:
為CEC 完成。 管道深度 - 4.5" (MER)
預期:4.5
實際:.4.5()
為什麼要添加額外的句點和括號? 另外,我對開頭的 ^ 感到困惑。 當我刪除它時,我只得到文本,而不是數字。
謝謝
回复:正則表達式提取數字和小數哎喲!
文本瀏覽器使用這種模式來表示數字
([\-\+]? ?[\.,]?[0-9][\.,0-9]*( ?e ?[\-\+]? ?\d+)?)
從左到右閱讀
- 可選的 + 或 -
- 可選空間
- 可選句點或逗號
- 必填數字
- 零個或多個句點、逗號和數字
- 一個可選的指數(裡面有可選的部分)
由於各個國家對小數點和千位分隔符的表示方式有不同的標準,因此逗號和句點可以互換。 有一些奇怪的字符串可能會漏掉,它們不是數字,因此您應該編寫代碼以期望 num() 函數可能返回缺失值。
回复:正則表達式提取數字和小數我想到了另一個案例:“馬克砍掉了 0.5” 根手指。” 我被困住了! 我無法讓我的正則表達式處理這個案例和其他案例。 它是一組案例或另一組案例!
使用前瞻...
Names Default to Here( 1 );
PIPE_LENGTH = "Length = 3.5\!". Completed by John.";
PIPE_LENGTH = "Completed for CEC. Pipe depth- 4.5\!" (MER)";
PIPE_LENGTH = "John cut 5\!"";
PIPE_LENGTH = "Mark cut .5\!" off his finger.";
Regex( PIPE_LENGTH, "\D*(?=\.)?(\d*\.?\d*)\D*", "\1" );
我想知道使用 JMP 模式是否會更容易。
@Craige_Hales , 你在哪裡???
回复:正則表達式提取數字和小數完美的。 感謝您對我的困惑提供的快速幫助。回复:正則表達式提取數字和小數Regex( PIPE_LENGTH, "\D*(\d+\.?\d*)\D*", "\1" );
回复:正則表達式提取數字和小數這個更好。 我確實有一個場景,例如:
約翰切了5英寸
這個沒有小數。 您的示例返回空白。
謝謝
回复:正則表達式提取數字和小數看起來 [^(\d+\.\d+)] 選擇除數字、小數和標點符號之外的所有內容。您將其替換為“”。 剩下的就是你的數字小數點和標點符號()。 這個表達式的表現符合我的預期。 我也在你的例子上進行了測試並得到了相同的結果。
像這樣的東西會起作用嗎?
正則表達式( :PipeLength, "(\d+.\d+)", "\1" )
不確定您的其餘數據是什麼樣子,但此表達式僅提取您需要的數字和小數。 它對你的兩個例子都有效。