正则表达式提取方括号之间的文本

时间:2012-04-17 09:45:38

标签: regex

我想从方括号中提取文本,我正在使用[(.*?)],但它不能完全正常工作。

  

Apr 17 13:01:34 10.11.26.83 2012-04-17 00:30:52.222 -0700 barracuda WF ALER OS_CMD_INJECTION_IN_URL 99.99.182.1 49923 99.99.83.74 80 security-policy GLOBAL DENY NONE [ type =“ 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” - “” - “

我想提取粗体文本。这样做的正则表达式是什么?

2 个答案:

答案 0 :(得分: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 时,使用否定字符类代替运算符始终是安全的。

波希米亚人可能会\[[^\]]+\]说,或者使用\[(?#if grouping required)([^\]\[]+)\]可能更安全。

为了在这个主题中建立更好的立足点visit here

答案 1 :(得分:0)

试试这个:

\[[^\]]+\]

[^\]]是“除a之外的任何字符”

的字符类