2016-11-24 4 views
0

ユーザーのユーザー名をYouNowと一致させようとしています。私はこのHTMLを抽出特別な文字で囲まれたユーザー名と一致させる方法

、私は、ユーザー名に_Youウォン

を抽出しよう
"\n\t\t\t\t\t\t14\n\t\t\t\t\t\t_You Won\n\t\t\t\t\t" 

これは私の正規表現の試みです:

(\d+)[\\n\\t]+([\W\w]+[^\\n\\t"$]) 

これはうまくいきました、最初の私がある番号と一致レベル、その後私はユーザー名と一致します。ただし、ユーザ名がtまたはnで終わる場合は、最後の文字は取得されません。だから、 1Nユーザーゲームは、誰かが私が正しく、ユーザ名を取得する方法を知っていゲーム1

に切り倒さなるだろうか?

はそれを再生する: https://regex101.com/r/j8rufa/2

+2

注意、改行ではありません。その文字列を扱うソリューションは、実際の単語アプリケーションでは機能していない可能性があります。逆もまた同様です。 –

+0

それは問題ではない、私はそれも逆も動作することを確認した、私はちょうどこの文字列の正規表現が必要ですが、私は正規表現で初心者以来、改善の余地があると思います。 – Black

答えて

1

あなたが代わりに[^\\n\\t"$]の終わりに肯定先読みを使用することができます。

あなたのコードは次のようになります。

(\d+)[\\nt]+([\W\w]+(?=\\n\\t)) 

デモ:https://regex101.com/r/j8rufa/4

あなたはまた、さらに全体の名前が一致することを確認するために、コードを強化するために正の後方参照を使用することができます。たとえば、名前がt_You Wonのようなものであれば、それは問題なくマッチします:

(\d+)[\\nt]+(?<=\\t)([\W\w]+(?=\\n\\t)) 

デモ:\のN 'リテラルの `のでregex101は、あなたの文字列としてリテラル文字列を扱うことhttps://regex101.com/r/j8rufa/6

+0

ありがとうございます、これは素晴らしいです:) ** YouWon ** – Black

+2

'[\\ n \\ t]'を '[\\ tn]'に短縮することができます。 t、例えばtnt。ユーザー名の後にスタッフがフォローしている場合は、さらに問題が発生します。 –

+0

@EdwardBlack私の喜び: – Ibrahim

関連する問題