_ と _$ ($ は文字列の末尾) の間の文字列を返す正規表現をまとめようとしています。
入力:
abc_def_ghi_
望ましい正規表現の結果:
def_ghi
私はthsiのようなかなりの数の組み合わせを試しました。
((([^_]*){1})[^_]*)_$
助けていただければ幸いです。
注: 上記の正規表現は、目的の def_ghi ではなく、abc_def を返します。
_ と _$ ($ は文字列の末尾) の間の文字列を返す正規表現をまとめようとしています。
入力:
abc_def_ghi_
望ましい正規表現の結果:
def_ghi
私はthsiのようなかなりの数の組み合わせを試しました。
((([^_]*){1})[^_]*)_$
助けていただければ幸いです。
注: 上記の正規表現は、目的の def_ghi ではなく、abc_def を返します。
_
では、最初と最後の間_
(両方を除く)のすべてですか?
それから試してください
(?<=_).*(?=_$)
(JavaScriptを使用していないことを願っています)
説明:
(?<=_) # Assert that the previous character is a _
.* # Match any number of characters...
(?=_$) # ... until right before the final, string-ending _
演算子の貪欲さを有利に利用することができます。
^.*?_(.*)_$
は、最初 (貪欲ではない) からアンダースコアまで、このアンダースコアから文字列の末尾までのすべてに一致し、アンダースコアが期待され、次に文字列の末尾に一致し、最初の一致でキャプチャされます。
^ Beginning of string
.*? Any number of characters, at least 0
_ Anchor-tag, literal underscore
(.*) Any number of characters, greedy
_ Anchor-tag, literal underscore
$ End of string