文字列の最後から何かをターゲットにするにはどうすればよいですか?
complexthing---50
other-_-50
MORE__------50
(50)で終わりたいのですが、この「複雑なもの-」は-で終わる可能性があります。したがって、この場合、混乱する可能性のある物乞いから「-」で中断することはできません。最後に何でも取得し、「-」で中断します
-(.*)
数字と文字列を区切るために50ごとの前に常に-があります、私は数字をターゲットにしたい(50)
私があなたを正しく理解していれば、次のようなことがうまくいくかもしれません:
-(\d+)$
文字列($)の終わりの直前にハイフン(-)とそれに続く1つ以上の数字(\ d +)を一致させます。数字のみをキャプチャします((...))。
あなたが求めているものについて考えてください:
-
。-
、それ自体は文字ではありません-
。これらはすべて、質問を表現するさまざまな方法であり、私たちが進むにつれて具体性が低くなります。これらのいずれもおそらくあなたのニーズに合うでしょうが、私はそれが何をするのかを示すためにそれぞれのケースをカバーします。
これらは、さまざまな方法で綴ることができます。使用している正規表現フレーバーによっては、これらの方法の一部を別の方法でエスケープする必要がある場合があり(たとえば、X+
vs X\+
vs XX*
)、すべてのフレーバーですべてがサポートされているわけではありません。
「常に文字列の最後にある番号」:
([0-9][0-9]*)$
([0-9]+)$
(\d+)$
正規表現のパターンは貪欲です。つまり、可能な限り一致します。したがって、最初のケースでは、文字列の最後(「文字列の最後」として指定)に少なくとも1つの数字を要求すると、文字列の最後に$
全体の数字が表示されます。
「文字の直後の数字-
」:
-([0-9][0-9]*)
-([0-9]+)
-(\d+)
ここでは、「文字列の終わり」を指定するのではなく、文字の後に続くように指定します-
。[0-9]
キャラクター自体とは一致しないため-
、キャプチャを回避するために他に何もする必要はありません-
。
「-文字に続くもの、それ自体は-文字ではない」:
-([^-][^-]*)
-([^-]+)
これは少し注意が必要です。負の一致()を指定して、数字が必要なことを指定するのではなく、ダッシュが必要ない[^X]
ことを指定するだけです。-
文字クラスの文字を一致させるのは難しい場合がありますが、ルールは「常に最初-
に指定する」であり、問題ないはずです。
OR演算子、を使用して、|
これかそれかを判断できます。