3

_ と _$ ($ は文字列の末尾) の間の文字列を返す正規表現をまとめようとしています。

入力:

abc_def_ghi_

望ましい正規表現の結果:

def_ghi

私はthsiのようなかなりの数の組み合わせを試しました。

((([^_]*){1})[^_]*)_$

助けていただければ幸いです。

注: 上記の正規表現は、目的の def_ghi ではなく、abc_def を返します。

4

3 に答える 3

4

_では、最初と最後の間_(両方を除く)のすべてですか?

それから試してください

(?<=_).*(?=_$)

(JavaScriptを使用していないことを願っています)

説明:

(?<=_)  # Assert that the previous character is a _
.*      # Match any number of characters...
(?=_$)  # ... until right before the final, string-ending _
于 2012-06-21T06:27:14.490 に答える
1

演算子の貪欲さを有利に利用することができます。

^.*?_(.*)_$

は、最初 (貪欲ではない) からアンダースコアまで、このアンダースコアから文字列の末尾までのすべてに一致し、アンダースコアが期待され、次に文字列の末尾に一致し、最初の一致でキャプチャされます。

^    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
于 2012-06-21T06:28:26.410 に答える