不要将数字接近文本

时间:2014-12-15 19:15:17

标签: regex excel-vba vba excel

给出以下字符串:

     4.2250                 T  4.2400        

如果我只想要第一个数字,并且由于它接近“T”而想要排除第二个数字,我将如何实现这个目标?

    ([^T]\d*\.\d*\s{0,3})

接近但不完美。

我正在使用vbscript.regexp

1 个答案:

答案 0 :(得分:0)

我假设你在vb中有一些脚本功能。有几种方法,但最好的方法是坐在全球搜索循环中。当您在捕获组1上匹配匹配时,如果组1匹配,则取其值,如果不匹配,则继续,直到不再匹配。

   # (?:T\s{0,5}\d*\.\d*)|(\d*\.\d*)

   (?:                           # Consume a T <space> number, do not take it
        T \s{0,5} \d* \. \d*   
   )
|                              # or,
   ( \d* \. \d* )                # (1), Consume a number, take this one

这可以缩短为

 # (T\s{0,5})?(\d*\.\d*)

 ( T \s{0,5} )?                # (1), A 'T' this number is not valid
 ( \d* \. \d* )                # (2), Consume a number, take this one

第2组始终包含一个数字。如果组1匹配,则该数字无效。