正则表达式匹配第一次出现

时间:2015-12-12 23:21:26

标签: php regex mediawiki-templates

我有这样的文字:

{{Infobox Item
|name = value
|prop2 = value
|prop3 = value
}}

来自mediawiki模板。

我有以下正则表达式:

preg_match('/\{\{Infobox Item.+\\n\}\}\\n/s', $text, $ra);

我正在使用PHP。

我想匹配从{{Infobox Item到第一次出现的}},它总是单独出现在一条线上。上面的正则表达式将从{{Infobox Item匹配到另一个{{ }}样式块的末尾,这不是我想要的。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

代码

preg_match('/{{Infobox Item.+?^}}$/sm', $subject, $regs)

正则表达式

{{Infobox Item.+?^}}$

Regular expression visualization

https://regex101.com/r/gC0oV1/1

人类可读

# {{Infobox Item.+?^}}$
# 
# Options: Case sensitive; Exact spacing; Dot matches line breaks; ^$ match at line breaks; Greedy quantifiers
# 
# Match the character string “{{Infobox Item” literally (case sensitive) «{{Infobox Item»
# Match any single character «.+?»
#    Between one and unlimited times, as few times as possible, expanding as needed (lazy) «+?»
# Assert position at the beginning of a line (at beginning of the string or after a line break character) (line feed) «^»
# Match the character string “}}” literally «}}»
# Assert position at the end of a line (at the end of the string or before a line break character) (line feed) «$»
相关问题