2012-04-17 5 views
0

Я хочу извлечь тексты из квадратных скобок, и я использую [(.*?)], но он не работает полностью.Регулярное выражение для извлечения текстов между квадратными скобками

17 апреля 13:01:34 10.11.26.83 2012-04-17 00: 30: 52,222 -0700 баррачуды WF ALER OS_CMD_INJECTION_IN_URL 99.99.182.1 49923 99.99.83.74 80 безопасности политика ГЛОБАЛЬНОЙ ОТРИЦАТЬ NONE [тип = "os-command-injection" pattern = "perl-language-function-substrings" token = "/ fork()"] GET 99.99.83.74/index.html/fork() HTTP "-" "Wget/1.12 (linux -gnu)»99.99.182.1 49923 "-" "-"

Я хочу, чтобы извлечь смелые тексты. Для чего это регулярное выражение?

+0

Что вы имеете в виду, если не работаете полностью? Я использовал ваше регулярное выражение, и у вас уже есть необходимое совпадение в группе 1. –

+0

Похоже, что ваша ошибка находится где-то в другом месте, потому что регулярное выражение, которое вы используете, верное. – hochl

+0

и как насчет все-есть '.'? как я помню, он не ест '\ n'. возможно, я ошибаюсь – gaussblurinc

ответ

2

@rprakash:

Анатомия картины

<!-- 
\[(.*?)\] 

Match the character “[” literally «\[» 
Match the regular expression below and capture its match into backreference number 1 «(.*?)» 
    Match any single character that is not a line break character «.*?» 
     Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?» 
Match the character “]” literally «\]» 
--> 

При использовании REGEX всегда можно использовать класс отрицательных символов вместо dot оператор.

Это может быть \[[^\]]+\], так как Богемский сказал или может быть безопаснее использовать \[(?#if grouping required)([^\]\[]+)\].

Для улучшения положения в этой области visit here.

0

Попробуйте это:

\[[^\]]+\] 

[^\]] класс символов для "любой символ, кроме а]"

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