2011-01-13 9 views
0

この構文は単語キーを持つ配列を返します。正規表現:パターンに0個以上の特殊文字が含まれています

(?<item>\w+) 

ex。 $配列[「アイテム」]



私はしてもしなくてもよい(その間の値を持つ)括弧が含まれていてもよい単語を検索したいこのフォームで戻り値をしたいが、

"ハロー"
または
"ハロー(いくつかのテキストと改行)"



このための構文は何ですか?

答えて

2
\w+(?:\([^)]*\))? 

括弧場合は、必要に応じて直接括弧で囲まれたテキストを続けることができた単語と一致します。ネストされたカッコは使用できません。

\w+ # Match alnum characters 
(?: # Match the following (non-capturing) group: 
\( # literal (
[^)]* # any number of characters except) 
\) # literal) 
)?  # End of group; make it optional 
+1

私は '(?:'は実際にはオプションではなく非キャプチャ*グループを表していると信じています。 **?**の '? ';最初の'?: 'は単に正規表現エンジンがこのグループを逆参照として利用できないようにします(これを参照することはない方が効率的です)。 –

+0

@Andrzey:私はちょうどそこに言及して、後に続くすべてがオプションであることを示しています(そうしなければ、最後に見つけられるでしょう)。 –

+0

パーフェクト!コードと説明をありがとうございました。私はそれが間違っていると認めます。 – Zebra

0
hello(\(\))? 

したり、正規表現エンジンのデフォルトは通常の文字に

hello\(()\)? 
+0

これは単に 'hello'や' hello() 'にマッチしますが、他には何もありません。正規表現には、かっこの間に何かがあるかもしれないという事実を説明するものは何もありません。 –

+0

私はこの質問に答え、その後、彼は括弧の間のテキストを許可するように彼の質問を編集しました – Robokop

関連する問題