我试图根据一致的模式提取字符串的一部分。例如,请使用以下照片标题:
在这张(空中)照片中,野火消耗了燃烧森林中的一棵树 2015年8月20日星期四,华盛顿州奥马克附近。几个消防队员 前线正在对抗在城镇中肆虐的野火 该州的中北部。 (Bettina Hansen /西雅图时报 通过AP)
我想在结尾处提取括号中的照片积分。我知道该部分总是以"("并以"通过AP结束)"开始。
我试过了:
\(.*via AP\)
但它从第一个括号(在单词天线前面)一直到最后一个括号中选择所有内容。我怎样才能抓住以"结尾的括号和#34;?
之间的部分谢谢!
答案 0 :(得分:0)
问题是.*
构造是贪婪的,并且很乐意匹配任何,包括其他左括号。在显示的输入中,这开始匹配在"(天线"并完成最后出现"通过AP的匹配)"成功匹配之间的所有内容。
要解决这个问题,请使用更精致且更少贪婪的构造:
\([^()]*via AP\)
这将匹配一个左括号字符,然后匹配除另一个括号之前的任何字符匹配"通过AP"。 [^..]
构造是一个否定的字符类。