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

そこに私の提案を投げかけるのもよいでしょう。2番目の部品番号の後にテキストがないことを表明します。

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

于 2012-07-27T17:34:18.943 に答える