regex:如何捕获字符串中的三个数字,而不是字符串的其余部分

regex: How do I capture three digits within a string, but not the rest of the string?

本文关键字:字符串 数字 余部 三个 何捕获 regex      更新时间:2023-09-26

我在这里有一个文本文档:http://regexr.com/3d7t5

使用Javascript(nodeJS),我需要匹配每个以C.O.开头的短语中的三位数:即001、003、036等

我尝试过使用非捕获组,但由于某些原因,我的查询不起作用:

/([0-9]+)(?:C.O.            : 'd'd'd)?/g

使用此模式:

/'bC'.O'.            : ('d'd'd)'b/g

然后对字符串执行exec,并获取第一个捕获组的内容。

var rx = /'bC'.O'.            : ('d'd'd)'b/g
var s = "C.O.            : 001 CALI'nC.O.            : 003 MIAMI'nC.O.            : 026 TEXAS";
for (var m = rx.exec(s); m; m = rx.exec(s)) {
   document.write(m[1]+' ');
}

编辑:如果空白的数量和种类可能不同,您当然也可以调整正则表达式来处理此问题:

/'bC'.O'.'s*:'s*('d'd'd)'b/g

如果只想匹配3位数字,则

/'d{3}/gm

就是你所需要的。但我认为你需要这样的东西:

/^C'.O'..*?('d{3})/gm

/^C'.O'..*?:'s*('d{3})/gm

您可以在这里和这里玩和修改上面的正则表达式。


事实证明,奎尔克科萨遗漏了一两个"小细节"。

正则表达式可能应该类似于:

/^'|'s+C'.O'.'s+:'s+('d{3})/gm

此处为示例。

这与下面文本中的009011匹配,但与Total C.O. ...不匹配。

+---------------------------------------------------------------------------------------------------------------------------------------+
| UNO - VER 8.5.                                                                         HORA  :    5:56 PM |
|                                                                                                                    PAGINA:         14 |
|                                                                                                                                       |
| Empresa         : MA                                                                                                  |
| C.O.            : 009 PALMIRA2 OUTLET                                                 Fecha Inicial : 2016/04/16  Hora Inicial:       |
| Tipo Inventario : 6   ETIQUETAS Y BOLSAS                                              Fecha Final   : 2016/04/16  Hora Final  :       |
+---------------------------------------------------------------------------------------------------------------------------------------+
|GRUPO              DESCRIPCION                           U.M.      CANTIDAD         BRUTO    DESCUENTOS     IMPUESTOS     T O T A L    |
+---------------------------------------------------------------------------------------------------------------------------------------+
01                  CLASIFICACION DANE                    UNI         45.000 ** OBSEQUIO **
-----------------------------------------------------------------------------------------------------------------------------------------
Total Inventario    ETIQUETAS Y BOLSAS                                45.000             0             0             0             0
Total Inventario    ETIQUETAS Y BOLSAS                                45.000             0             0             0             0
-----------------------------------------------------------------------------------------------------------------------------------------
Total C.O.          PALMIRA2 OUTLET                                              1,001,346             0       160,254     1,161,600
Total C.O.          PALMIRA2 OUTLET                                              1,001,346             0       160,254     1,161,600
+---------------------------------------------------------------------------------------------------------------------------------------+
| UNO - VER 8.5.                                                                         HORA  :    5:56 PM |
|                                                                                                                    PAGINA:         15 |
|                                                                                                                                       |
| Empresa         : MA                                                                                                  |
| C.O.            : 011 CARTAGO                                                         Fecha Inicial : 2016/04/16  Hora Inicial:       |
| Tipo Inventario : 3   PRODUCTO TERMINADO                                              Fecha Final   : 2016/04/16  Hora Final  :       |
+---------------------------------------------------------------------------------------------------------------------------------------+
|GRUPO              DESCRIPCION                           U.M.      CANTIDAD         BRUTO    DESCUENTOS     IMPUESTOS     T O T A L    |
+---------------------------------------------------------------------------------------------------------------------------------------+
01                  CLASIFICACION DANE                    UNI         26.000       853,537       225,943       100,415       728,009
-----------------------------------------------------------------------------------------------------------------------------------------
Total Inventario    PRODUCTO TERMINADO                                26.000       853,537       225,943       100,415       728,009
Total Inventario    PRODUCTO TERMINADO                                26.000       853,537       225,943       100,415       728,009