2012-02-12 5 views
1

{{}}の間のすべての英数字をテキストで検索したいと考えています。 例テキストにサブ文字列{{foo}}が含まれている場合は、fooが見つかりません。 {{#foo}}が含まれている場合、fooは#fooではありません。Regex - {{と}}の間の英数字の検索

私は次のパターン(?<=\\{\\{)(.*?)(?=\\}\\})を試しましたが、上記の2番目の例では常に#を返します。

誰でも手伝ってもらえますか?

+0

'{{f#oo}}'が含まれているとどうなりますか? – dasblinkenlight

+0

Fyiでは、アスタリスクの代わりにバッククォートを使用して、コードとコードのようなテキストを囲みます。さらに、使用している正規表現エンジンについて言及することは、通常は良い考えです。 – ThiefMaster

+0

dasblinkenlight:それは良い点です。もし文字列が 'f#oo'なら' foo'を元に戻します。私。私は英数字以外の文字を無視したい。 –

答えて

2

あなたはこれを試すことができます。

(?<=\{\{[^A-Za-z0-9]*)([A-Za-z0-9]+)(?=.*\}\}) 

この式は、いずれかの場合は、{{後最初の英数字の前に英数字以外の文字をスキップすることができます。また、英数字以外の英数字を閉じる前に}}にすることもできます。

EDIT

あなたのコメントに応答して、およそf#oo:私の知る限りでは、次のことができない「一緒にのり」は、複数の非連続的な一致グループ。最も簡単な解決策は、あなたのC#のホスティングプログラムで別の正規表現を使用することです:

var rgx = new Regex(@"\W"); // Any non-word character 
var result = rgx.Replace("f#oo$bar", ""); // Returns "foobar" 

あなたは答えの1が英数字の最初の連続したブロックと一致するため、元の正規表現に戻る必要があるだろう。

+0

Okey。助けてくれてありがとう :) –

関連する問題