5

文字列の最後から何かをターゲットにするにはどうすればよいですか?
complexthing---50 other-_-50 MORE__------50

(50)で終わりたいのですが、この「複雑なもの-」は-で終わる可能性があります。したがって、この場合、混乱する可能性のある物乞いから「-」で中断することはできません。最後に何でも取得し、「-」で中断します

-(.*)

数字と文字列を区切るために50ごとの前に常に-があります、私は数字をターゲットにしたい(50)

4

3 に答える 3

9

私があなたを正しく理解していれば、次のようなことがうまくいくかもしれません:

-(\d+)$

文字列($)の終わりの直前にハイフン(-)とそれに続く1つ以上の数字(\ d +)を一致させます。数字のみをキャプチャします((...))。

于 2012-10-12T22:01:35.780 に答える
1

あなたが求めているものについて考えてください:

  • 常に文字列の最後にある番号
  • 文字の直後の数字-
  • 文字に続くもので-、それ自体は文字ではありません-

これらはすべて、質問を表現するさまざまな方法であり、私たちが進むにつれて具体性が低くなります。これらのいずれもおそらくあなたのニーズに合うでしょうが、私はそれが何をするのかを示すためにそれぞれのケースをカバーします。

これらは、さまざまな方法で綴ることができます。使用している正規表現フレーバーによっては、これらの方法の一部を別の方法でエスケープする必要がある場合があり(たとえば、X+vs X\+vs XX*)、すべてのフレーバーですべてがサポートされているわけではありません。

「常に文字列の最後にある番号」:

([0-9][0-9]*)$
([0-9]+)$
(\d+)$

正規表現のパターンは貪欲です。つまり、可能な限り一致します。したがって、最初のケースでは、文字列の最後(「文字列の最後」として指定)に少なくとも1つの数字を要求すると、文字列の最後に$全体の数字が表示されます。

「文字の直後の数字-」:

-([0-9][0-9]*)
-([0-9]+)
-(\d+)

ここでは、「文字列の終わり」を指定するのではなく、文字の後に続くように指定します-[0-9]キャラクター自体とは一致しないため-、キャプチャを回避するために他に何もする必要はありません-

「-文字に続くもの、それ自体は-文字ではない」:

-([^-][^-]*)
-([^-]+)

これは少し注意が必要です。負の一致()を指定して、数字が必要なことを指定するのではなく、ダッシュが必要ない[^X]ことを指定するだけです。-文字クラスの文字を一致させるのは難しい場合がありますが、ルールは「常に最初-に指定する」であり、問​​題ないはずです。

于 2012-10-12T22:16:57.027 に答える
0

OR演算子、を使用して、|これかそれかを判断できます。

于 2012-10-12T22:01:30.297 に答える