正则表达式获取匹配的子字符串

时间:2012-07-27 17:06:10

标签: regex

对于奇怪的措辞感到抱歉,我不知道如何描述我需要做的简洁......

我需要从系统数据库返回的字符串中提取部件号的第一部分。部件号通常具有以下格式:

VENDOR FIRST123-SECOND123

VENDOR是可选的,分隔连字符也是可选的。如果没有连字符,我需要以FIRST123或最后一个“单词”结束。

到目前为止,我可以使用以下内容获取FIRST123-SECOND123

[^ ]*$

我无法弄清楚如何分割结果匹配以获取任何连字符之前的所有内容。想法?

3 个答案:

答案 0 :(得分:1)

您可以使用lookahead

/[^-\s]+(?=\S*$)/

这将捕获第一个非连字符,非空白字符序列,这些字符仅与非空格分开。

然而,我会说字符串方法会有更多的帮助。获取lastIndexOf(" "),然后从firstIndexOf("-")获取,然后获取它们之间的子字符串。

答案 1 :(得分:1)

这是我的正则表达式,以获得你想要的东西:

[^ ]*\w*(?=-)

你开始很好。 \w*说“获取所有单词字符”(字母和数字),(?=-)表示“最多一个后跟短划线”

答案 2 :(得分:0)

不妨把我的建议扔在那里。断言第二个零件号后面没有更多文字。

/[a-zA-z]\+\d\+[^$]