细胞配方的正则表达式排除单位



我想从字符串中删除一些文本,只留下数字(公式(

示例

=(3m2*3m(*2/10Worker

这个想法是编写正则表达式,以仅保留"*"或"/"之类的文本和运算符,但要删除所有已定义的单元,例如" M2"或" M3"(Cubic Meters(或从字符串中删除" 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 = "mdb|(d*[,.]?d+)|[^0-9.*/()+-]+" 

,然后

objRegExp.Replace(cell, "$1")

请参阅正则演示。要确保将逗号解析为十进制分离器,请用.替换它们(您可以使用s = Replace(s, ",", ".")(。

模式详细信息

  • mdb - m随后是数字和单词边界
  • |-或
  • (d*[,.]?d+)-第1组(用$1提及(:任何0 数字,可选的,.
  • |-或
  • [^0-9.*/()+-]+-1或更多的chars以外的其他字符,./()+-。也许您想在此处添加,,在0-9之后添加。

最新更新