我想从我的字符串中删除一些文本,只留下数字(公式)
示例
=(3平方米* 3M)* 2 / 10worker
我们的想法是编写正则表达式,只留下文本和运算符,如“*”或“/”,但删除字符串中所有已定义的单位,如“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
我想知道如何为我的目的编写正则表达式。
答案 0 :(得分:2)
您可以使用
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个或多个字符,.
,/
,(
,)
,+
和{{1 }}。也许您想在此处添加-
,在,
。