2016-05-06 9 views
1

一致するアイテム

[O!BOM031][O!BOM016][O!BOM037] 

私の醜い正規表現は、このようなものです:

[A-Z!\d\[\]]+ 

動作するようです。しかし、私が知らないのは、これらのアイテムがドキュメント内にあり、周囲のテキストが他のテキストと一致している場合です。

例:

Rogue's Best Friend [O!BOM030] This wide belt...(text) 
Little Friend Locket [O!BOM031]...(text) 

私が働く何かを見つけたが、私はそれは完全に間違っている知っている:

([A-Z!\d\[])+\d] 

何らかの理由で、私は、この行に一致させることができます:[O!BOM031][O!BOM016][O!BOM037]。どのように正規表現でこれらの項目を一致させたいだけで、ドキュメント内の他の項目も一致させないように指定するにはどうすればよいですか?

答えて

2

これは動作するはずです:

\[[A-Z]!BOM\d{3}\] 

説明:

\[ // matches [ literally 
[A-Z] // matches an uppercase letter 
!BOM // matches !BOM literally 
\d{3} // match 3 sequential digits 
\] // matches ] literally 

Regex101

+0

それ確か作品を。だから、\で区切られた\ [と\]は式を囲みます(つまり、外にあるものはすべて無視されます)。これらの2つはどうですか?^$。それは '正規表現の始まり'/'正規表現の終り'(「文字通り」のような)も意味しないのでしょうか?それとも、おそらく完全に違うのでしょうか? – ene

+0

'[' ']'と '\ 'はリテラルです。角括弧は正規表現の文字セットです。これは、あなたがそれらにあるものは、正規表現が探すものであることを意味します。例えば、 '[asdf]'は 'a'、' s'、 'd'、' f'のいずれかにマッチします。また、 '[^ asdf]'のネゲートセットもあります。これは、セットに指定されているもの以外のものと一致することを意味します。 '^'は文字列の先頭を意味し、 '$'は文字列の終わりを意味します。 '^'と '$'の意味は、指定したフラグに応じて変わります。私はこれがJavaScriptだと仮定しています。 JSでは、 'm'マルチラインフラグを指定すると、'^'と' $ 'は文字列ではなく行単位でマッチします。希望が役立ちます。 – timolawl

+0

ああコメントは私の\を削除します。これらの文字を文字通り一致させたいので、 '['と ']'の前に\を使用しました。これは文字のエスケープと呼ばれます。これを行う理由は、これらの文字が正規表現で特別な意味を持つからです。 – timolawl

関連する問題