3

正規表現を理解しようとすると、いつも頭が痛くなります。

次の文字列の例があります。

3;#i_0_.f_membership_john.smith@domain.com_LThumb.jpg

2;#i_0_.f_membership_jane.doe@domain.com_LThumb.jpg

john.smith@domain.com文字列からピースを取得する必要があります。文字列の末尾は常に で_LThumb.xxxあり、プレフィックスは常に である必要がありますxxx_membership_

誰かがこれを手伝ってくれるC#の正規表現を考え出すことができれば、私はとても感謝しています

4

2 に答える 2

4

\w+?_membership_(\S*?)_LThumb.jpg

\w            # Capture a word character
 +            # One or more times
 ?            # Lazily (smallest match possible)
_membership_  # Literal string
(             # Start capturing group
\S            # Any character that isn't whitespace
 *            # Zero or more times
 ?            # Lazily (smallest match possible)
)             # End capturing group
_LThumb.jpg   # Literal string

membershipこれには、文字列から必要なものだけを確実に引き出すために、先頭に「あるべき」という接頭辞が含まれています。

電子メールは試合のグループ1になります。

あなたはRegexrで正規表現で遊ぶことができます

于 2012-06-26T20:49:06.537 に答える
3

この状況では、正規表現は問題ないはずです。次のように、 and をアンカーとして使用"_membership_""_LThumb.jpg"ます

@"_membership_(.*?)_LThumb.jpg"

アンカー間のすべてを取得する最初のキャプチャ グループを取得します。

var email = Regex.Match(
    "2;#i_0_.f_membership_jane.doe@domain.com_LThumb.jpg"
,   @"_membership_(.*?)_LThumb.jpg"
).Groups[1].ToString();

これは印刷します

jane.doe@domain.com
于 2012-06-26T20:49:35.850 に答える