正则表达式提取数字和小数我有一列,我需要从每行的字符串中提取数字。 这些数字可以是小数,也可以不是。
我正在使用这个公式: 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" )
不确定您的其余数据是什么样子,但此表达式仅提取您需要的数字和小数。 它对你的两个例子都有效。