如何使用Regex识别字符串的某些部分?

时间:2015-08-21 01:00:04

标签: regex

我试图根据一致的模式提取字符串的一部分。例如,请使用以下照片标题:

  

在这张(空中)照片中,野火消耗了燃烧森林中的一棵树   2015年8月20日星期四,华盛顿州奥马克附近。几个消防队员   前线正在对抗在城镇中肆虐的野火   该州的中北部。 (Bettina Hansen /西雅图时报   通过AP)

我想在结尾处提取括号中的照片积分。我知道该部分总是以"("并以"通过AP结束)"开始。

我试过了:

\(.*via AP\)

但它从第一个括号(在单词天线前面)一直到最后一个括号中选择所有内容。我怎样才能抓住以"结尾的括号和#34;?

之间的部分

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是.*构造是贪婪的,并且很乐意匹配任何,包括其他左括号。在显示的输入中,这开始匹配在"(天线"并完成最后出现"通过AP的匹配)"成功匹配之间的所有内容。

要解决这个问题,请使用更精致且更少贪婪的构造:

\([^()]*via AP\)

这将匹配一个左括号字符,然后匹配另一个括号之前的任何字符匹配"通过AP"。 [^..]构造是一个否定的字符类。