对于奇怪的措辞感到抱歉,我不知道如何描述我需要做的简洁......
我需要从系统数据库返回的字符串中提取部件号的第一部分。部件号通常具有以下格式:
VENDOR FIRST123-SECOND123
VENDOR
是可选的,分隔连字符也是可选的。如果没有连字符,我需要以FIRST123
或最后一个“单词”结束。
到目前为止,我可以使用以下内容获取FIRST123-SECOND123
:
[^ ]*$
我无法弄清楚如何分割结果匹配以获取任何连字符之前的所有内容。想法?
答案 0 :(得分:1)
您可以使用lookahead:
/[^-\s]+(?=\S*$)/
这将捕获第一个非连字符,非空白字符序列,这些字符仅与非空格分开。
然而,我会说字符串方法会有更多的帮助。获取lastIndexOf(" ")
,然后从firstIndexOf("-")
获取,然后获取它们之间的子字符串。
答案 1 :(得分:1)
这是我的正则表达式,以获得你想要的东西:
[^ ]*\w*(?=-)
你开始很好。 \w*
说“获取所有单词字符”(字母和数字),(?=-)
表示“最多一个后跟短划线”
答案 2 :(得分:0)
不妨把我的建议扔在那里。断言第二个零件号后面没有更多文字。
/[a-zA-z]\+\d\+[^$]