繁体   English   中英

正则表达式匹配除了以数字开头的字符串之外的所有内容

[英]Regex to match everything except strings that starts with digits

嗨这是我的第一个问题,我对正则表达式很新,我希望有人可以提供帮助。

我的样本数据如下:

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)

我不是使用单词边界,而是使用lookarounds。 这些外观断言如果前面的内容是空格或输入的开头,则单词结束,并且继续进行的是空格或输入的结尾。 这样做的原因是使用\\b可能会失败,例如a10-333

演示

你可以试试这个:

/\b[^\d-\s][\w-]+\b/i

哪里:
\\b - 单词的开头和结尾
[^\\d-\\s] - 匹配除数字,短划线和空格之外的任何字符
[\\w-]+ - 匹配从a到z的字符,从0到9和_(不区分大小写)

你可以在这里查看这个正则表达式

你可以做:

/\b([a-zA-Z]\w+)/

演示

如果你想要匹配诸如a33-45单词,你需要改为:

/\b([a-zA-Z][\w\d-]+)/

演示2

只需添加到第二个字符类, [\\w\\d-]您认为可接受的'单词'字符并添加到第一个字符类, [a-zA-Z]您认为可接受的单词起始字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM