2010-03-20 60 views
2

我想要一个正则表达式模式来查找这种格式的所有单词[xyzblab23la]。请帮我找到以下模式的正则表达式

例如,如果文本具有类似于以下,

Lorem Ipsum dolor[32a] ameit[34] 

我应该能够找到[32A]和[34]。请告诉我这种模式的正则表达式是什么?

回答

7

您可以使用以下正则表达式全球找到所有的比赛:

\[.*?\] 

\[[^\]]*\] 

说明:

  • \[[是meta char为 开始的char类,所以要匹配 字面[我们需要将其转义。
  • .*?:以非贪婪的方式匹配 中的所有内容。
  • \]:以匹配字面]
  • [^\]]:所述 上述类型的零个或多个字符:一个char匹配 比]
  • [^\]]*其他任何炭类。
+0

你为什么要强调这个词 '全球'。这是否意味着任何正则表达式世界(我是新的正则表达式模式) – bragboy 2010-03-20 16:26:43

+0

既然你想找到*所有*这样的模式,我们需要匹配全局正则表达式。默认情况下(至少在Perl和PHP中,使用preg_match)匹配进程一旦找到一个匹配就会停止。在Perl中,我们使用正则表达式的* g *选项,而在PHP中,我们使用preg_match_all函数全局进行匹配。 – codaddict 2010-03-20 16:29:40

6

尝试此正则表达式:

\[[^[\]]+] 

甲简短说明:

  • \[相匹配的滑动[
  • [^[\]]+匹配一个或除了[多个任意字符和]
  • ]匹配的普通]
2
/(\[[a-z0-9]+\])/i/