2017-11-11 182 views
1

我一直在尝试使用真棒包nlf创建许可证NPM NLF - 提取版本号出事后(使用正则表达式)

的名单,但想从它产生

大量的列表中删除特定的版本号

我刚学正则表达式,得到了这个表达式到目前为止

\b[^\w]@*[\d.]\b 

enter image description here

但它似乎抢到许可证版本号以及..

我只是想拿出@和空间之间的数字。

下面是一些示例文本

[email protected] [license(s): MIT] 
package.json: MIT 

[email protected] [license(s): AFLv2.1, AFLv2.1/BSD, BSD] 
package.json: AFLv2.1, AFLv2.1/BSD, BSD 
readme files: BSD 

[email protected] [license(s): MIT] 
package.json: MIT 
license files: MIT 

[email protected] [license(s): MIT] 
package.json: MIT 
license files: MIT 
readme files: MIT 

[email protected] [license(s): ISC] 
package.json: ISC 
license files: ISC 

[email protected] [license(s): MIT] 
package.json: MIT 
readme files: MIT 

[email protected] [license(s): MIT] 
package.json: MIT 
license files: MIT 

FYI:我使用的Atom如果它很重要..

+1

尝试'\ b @ [\ d] * \ D' –

+0

没有结果的Atom – Norfeldt

+0

好吧,看来在所有regex101发动机工作 - https://regex101.com/r/nGNhUq/1 –

回答

1

如预期,因为@\b[^\w]匹配您正则表达式不工作(任何非字字符前面有一个字字符)和@*模式不匹配任何,并[\d.]\b匹配的

您可以使用

\[email protected][\d.]*\d 

请参阅regex demo

详细

  • \[email protected] - 一个@其前面带有任何字字符(字母,数字或_
  • [\d.]* - 0+数字或.,尽可能多的
  • \d - 一个数字。