1

对不起,奇怪的措辞,我不知道如何简洁地描述我需要做的事情......

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

VENDOR FIRST123-SECOND123

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

到目前为止,我可以获得FIRST123-SECOND123以下内容:

[^ ]*$

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

4

3 回答 3

2

您可以使用前瞻

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

这将捕获第一个非连字符、非空白字符序列,该序列仅由非空白字符与结尾分隔。

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

于 2012-07-27T17:11:03.260 回答
2

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

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

你开局不错。\w*说“获取所有单词字符”(字母和数字)并(?=-)说“最多一个后跟一个破折号”

于 2012-07-27T17:11:54.373 回答
0

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

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

于 2012-07-27T17:34:18.943 回答