我想从字符串中删除一些文本,只留下数字(公式)
示例
=(3m2*3m)*2/10 worker
这个想法是编写正则表达式,只留下文本和运算符,如“*”或“/”,但从字符串中删除所有定义的单位,如“m2”或“m3”(立方米)或“worker”。我需要这个在Excel中编写公式,然后有可能知道公式中特定数字的含义
我得到的公式如下:
Function xxx(cell As String, _
Optional ByVal IsGlobal As Boolean = True, _
Optional ByVal IsCaseSensitive As Boolean = True) As Variant
'Declaring the object
Dim objRegExp As Object
'Initializing an Instance
Set objRegExp = CreateObject("vbscript.regexp")
'Setting the Properties
objRegExp.Global = IsGlobal
objRegExp.Pattern = "[a-zA-Z^0-9_,-]"
objRegExp.IgnoreCase = Not IsCaseSensitive
'Execute the Replace Method
xxx = Evaluate(objRegExp.Replace(cell, ""))
End Function
我想知道如何为我的目的编写正则表达式。
最佳答案
您可以使用
objRegExp.Pattern = "m\d\b|(\d*[,.]?\d+)|[^0-9.*/()+-]+"
然后
objRegExp.Replace(cell, "$1")
请参阅regex demo 。为了确保逗号被解析为小数分隔符,请将它们替换为 .
(您可以只使用 s = Replace(s, ",", ".")
) .
图案详细信息
m\d\b
-m
后跟数字和单词边界|
- 或(\d*[,.]?\d+)
- 第 1 组(用$1
引用):任何 0+ 数字,可选的,
或.
|
- 或[^0-9.*/()+-]+
- 1 个或多个数字以外的字符、.
、/
、(
,)
、+
和-
。也许你想在这里添加一个,
,将其添加在0-9
之后。
关于regex - 用于排除单位的单元格公式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48827406/