2017-06-22 6 views
0

は、この文字列のために私はすべてのAaを一致させたい:最初の文字のすべてのインスタンスにどのように一致させることができますか?例えば

"LL pples mの KE良いC KE。"ここで

は、私がやったことだ:私は「にISN他の文字と一致したくないので (.)は、その後、私は [^.]*を追加しました: /(.)[^.]*\1*/ig

は、私は、任意の文字することができ、グループ内の最初の文字を、取得することにより開始しました最初のもの。最後に、最初の文字を再度一致させたいので、\1*を追加しました。私が試した他の類似したバリエーションはすべて動作していないようです。あなたが構築しようとしている正規表現は否定先読み(tempered dot)を使用して、アップ可能な限り同じ文字までの任意のものその後、非常に最初の文字をキャプチャします

+0

'[^。] *'何の後方参照を持っていない - それだけ「ではないと言っていますワイルドカード "と一致することはありません。正規表現を使用する本当の理由がない限り、これは実際には単純な文字列操作に適したもののようです。 –

+0

'\ b [^ \ WAa] *([Aa])[^ \ WAa] * \ b'この正規表現は、最初に' \ b [a-zA-Z] 'とマッチさせてから上記の正規表現を作るその手紙は何ですか。その後、すべてのマッチにその正規表現を使用します。 – sln

+0

私は最も簡単な方法は最初の文字を取得してそれにマッチさせることだと思います。 –

答えて

2

(?i)(\w)(?:(?!\1).)* 

キャプチャグループ1は、文字を保持していますあなたが必要です。 live demoで試してみてください。

正規表現エンジンは、トークン\K試合の再セッターをサポートしている場合、あなたはonly match desired partに上記の正規表現に付加することができます

(?i)(\w)(?:(?!\1).)*\K 
+0

うわー!素晴らしい解決策! –

関連する問題