嗨,这是我的第一个问题,我对regex非常陌生,希望有人能提供帮助。

我的样本数据如下:

black PENS Assorted Bit Set 10Pcs
Hollow blocks 10-16mm Cd3
Hollow blocks 16-23mm Cd3
Hollow blocks 5-10mm Cd3
Hollow blocks To 1-5mm Cd3

\b[^\d]+\b


我正试图提出一个正则表达式,它将匹配列表中的所有内容,但以数字开头的单词(例如10-16mm)除外。我想出了上述正则表达式,但是不幸的是我没有想要的正确输出。 CD3应该匹配,因为它以字母开头,数字之间的破折号(-)不应匹配。

感谢帮助!

最佳答案

我会使用这种模式:

(?<=^|\s)[^0-9].*?(?=$|\s)


我使用环顾四周,而不是使用单词边界。这些环顾断言断言,如果单词前面是空白或输入的开头,而单词结束则是空白或输入的结尾,则单词结束。原因是对于\b之类的术语,使用a10-333可能会失败。

Demo

10-04 20:30