2016-08-03 7 views
0

これは説明するのが難しいです。私はこの正規表現を持っています([a-zA-Z][\w.]+|[0-9][0-9_.]*[a-zA-Z]+[\w.]*):(.*) - それはUsername:Whateverをキャプチャし、最初のキャプチャグループのユーザ名のみをキャプチャします。Regex - コンプレックスキャプチャ

問題は、ユーザー名の部分を電子メールで置き換えると、電子メールの@の後にあるすべての情報を取得するということです。私はそれが「何でも」のビットでさえも何も捕らえないようにしたい。

私はこれを行う方法を見つけることができません。

例入力の:

[email protected]:123abc 
username:123abc 
[email protected]:abc123 
Shiny:abc123 

出力は次のようになります。

username:123abc 
Shiny:abc123 

現在の正規表現の出力:

domain.ext:123abc 
username:123abc 
gmail.com:abc123 
shiny:abc123 
+1

使用アンカー: '^([a-zA-Z]の[。ワット\] + | [0-9] [。0-9 _] * [-ZA-Z] + [\ w *] *):(。*)$ ' – anubhava

+0

@anubhava ^と$は私の正規表現をどこで検索しているかによって動作しません。 –

+0

入力と出力の例を挙げて[編集]できますか?そして、あなたはこれをどの言語で使っていますか? – 4castle

答えて

1

正規表現意志の最初と最後にアンカー^$を追加しますマッチを最初からenまで強制するd。あなたがMultiline modeを有効にした場合

^([a-zA-Z][\w.]+|[0-9][0-9_.]*[a-zA-Z]+[\w.]*):(.*)$ 

、それは各ラインの代わりに、最初と最後にアンカーの試合を行います。

Regex101 Demo