嗨,这是我的第一个问题,我对regex非常陌生,希望有人能提供帮助。
我的示例数据如下:
[]
我正在尝试提出一个与列表中所有内容都匹配的正则表达式,但以数字开头的单词(例如10-16mm)除外。我想出了上述正则表达式,但是不幸的是我没有想要的正确输出。 CD3应该匹配,因为它以字母开头,数字之间的破折号(-)不应匹配。
感谢帮助!
答案 0 :(得分:2)
我会使用这种模式:
(?<=^|\s)[^0-9].*?(?=$|\s)
我使用环顾四周,而不是使用单词边界。这些环顾断言断言,如果单词前面是空格或输入的开头,而单词结束则是空格或输入的结尾,则单词结束。原因是使用\b
对于诸如a10-333
之类的术语可能会失败。
答案 1 :(得分:1)
您可以尝试以下方法:
/\b[^\d-\s][\w-]+\b/i
其中:
\b
-单词的开头和结尾
[^\d-\s]
-匹配除数字,破折号和空格之外的任何字符
[\w-]+
-匹配字符从a到z,从0到9和_(不区分大小写)
您可以检查此正则表达式here
答案 2 :(得分:1)