7

現在私はこの文字列を持っています

"RED-CURRENT_FORD-something.something"

ハイフンの間の単語をキャプチャする必要があります。この場合、単語CURRENT_FORD

私は次のように書いています

\CURRENT_.*\B-\

CURRENT_FORD-2つのレベルでどちらが間違っているかを返します。

  1. ハイフンの間のすべてがで始まることを意味しますCURRENT
  2. 最後にハイフンが含まれます。

最初の単語を明示的に指定せずに、ハイフンの間にある単語をキャプチャするより効率的な方法はありますか?

4

4 に答える 4

6

区切り文字を使用してパターンをバインドし、必要なものを括弧でキャプチャできます。

/-([^-]+)-/

その後、ハイフンを削除できます。

于 2012-11-08T15:00:49.107 に答える
5

これらの正規表現を使用できます

(?<=-).*?(?=-)//if lookaround is supported

また

-(.*?)-//captured in group1

.*?任意の文字に一致します。つまり.、0 回から何度も一致します。つまり、*遅延します。?

(?<=-)は、-目的の一致の前の文字に一致するゼロ幅の先読みアサーションです。つまり、一致後の.*?文字に一致するゼロ幅の先読みアサーションです。(?=-)-.*?

于 2012-11-08T15:01:44.857 に答える
1
(?<=-)\w+(?=-)

それ自体はキャプチャに参加しないハイフン間の任意のシーケンスまたは「単語」文字 (後読みおよび先読み条件)

于 2012-11-08T15:05:54.597 に答える
0

単語境界オプションを使用してみてください。

/^.*-\b(\w+)\b-.*$/

これは実際には3つ(まあ、2つ)の部分です:

^.*-\b

トークンの先頭からダッシュの後に単語の境界(「単語の文字」と「単語以外の文字」の間の非表示の境界)までのすべての文字を示します

(\w+)

ダッシュの間のビットをキャプチャし、それを一致したパターン変数に入れます(これが括弧の目的です)

最後の部分は、ダッシュの後の他の文字と一致する最初の部分の単なる繰り返しです。

于 2012-11-08T15:24:17.293 に答える