我有一张不同物品的清单。有些名字前面有8-10个数字,有些名字后面有8-10个数字,还有一些名字中没有这些数字。
我有两个用于删除这些数字的表达式,但我无法将它们与|(或)组合在一起。它们各自为自己工作,但是如果我先使用第一个表达式,然后使用第二个表达式,我就得不到我想要的结果。
目前,我将这些用于表达式:
(?<=[\d]{8,10}) (.*)
.*?(?=[\d]{8,10})
但是如果我同时使用它们(首先使用一个,然后使用另一个),那么一些行就会变得完全空了。
我如何组合这些来做我想做的事情,或者如果这样做更好的话,可以写一个新的表达式来做我想做的事情:)
List如下所示:
12345678 Book
12345678 Book
Book 12345678
Book 12345678
Cabinet 120x30x145
想要这样的结果:
Book
Book
Book
Book
Cabinet 120x30x145
发布于 2019-03-23 19:03:28
发布于 2019-03-23 19:11:54
除了包含8-10位数字+相邻空格的数字之外,不要只对所有数字进行匹配,而是使用正则表达式将这样的数字(也是+相邻空格)替换为空字符串。
要进行匹配,请使用以下正则表达式:
*\d{8,10} *
这就是:
*
-一个空格和一个星号-一个空格序列(可能是空的),\d{8,10}
-一个8到10位的序列,*
-另一个空格序列(可能是空的)。替换字符串(正如我所说的)是空的。当然,您应该使用g
(全局)选项。
请注意,您不能使用\s
而不是空格,因为\s
也匹配CR
和LF
,而我们不希望这样。
有关工作示例,请参见https://regex101.com/r/1hsGzT/1
发布于 2019-03-23 19:07:55
您需要使用\b
meta sequence boundary
/\b0-9\s{8,10}\b/g;
var str = `12345678 Book
12345678 Book
Book 12345678
Book 12345678
Cabinet 120x30x145`;
var rgx = /\b[0-9\s]{8,10}\b/g;
var res = str.replace(rgx, `\n`)
console.log(res);
https://stackoverflow.com/questions/55312915
复制相似问题