2016-05-06 6 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

Он уверен, работает. Итак, \ [и \] с \ заключает выражение (что означает, что все остальное снаружи игнорируется)? Как насчет этих двух;^$. Разве это не означает «начало регулярного выражения»/«Конец регулярного выражения» (например, «буквально»)? Или, возможно, это совершенно другое? – ene

+0

'' '' '' '' '' буквально. Квадратные скобки являются наборами символов в регулярном выражении. Это означает, что все, что у вас есть, это то, что будет искать регулярное выражение. Например, '[asdf]' будет соответствовать любым из 'a',' s', 'd' или' f'. Также отменен набор '[^ asdf]', что означает соответствие любому, кроме того, что указано в наборе. '^' само по себе означает начало строки, а '$' означает конец строки. Значение '^' и '$' может изменяться в зависимости от указанных вами флагов. Я предполагаю, что это JavaScript. В JS, если вы задаете многострочный флаг 'm', то'^'и' $ 'соответствует по строке вместо строки. Надеюсь, это поможет. – timolawl

+0

Ах удаляет мои комментарии. Я использовал \ перед '[' и ']', потому что мы хотим, чтобы эти символы соответствовали буквально. Это называется экранирование символов. Причина, почему мы делаем это, состоит в том, что эти символы имеют особое значение в регулярном выражении. – timolawl

Смежные вопросы