Preg_match PHP - 模式匹配

时间:2011-12-08 10:18:54

标签: php preg-match

尝试了解preg_match,努力了解如何编写以及如何访问匹配的内容。例如:

我拥有的每个电影名称都采用格式 -

电影名称(年)

e.g。爱丽丝梦游仙境(2010)

我希望能够将电影标题变成与字符串不同的变量。

一些电影在年外有括号 - 如电影(其中一个)(2008)

我也在迭代一个字符串数组 - 所以我基本上需要使用preg_match来到\([0-9]{4}\)$$行的结尾标记?)然后没有那一年的字符串的其余部分以及两个变量。

有人可以帮忙吗?

编辑:嗯。我发誓我打字\。当我输入\(它进入(因为我没有双重逃脱。无论如何,非常感谢你们!你链接它的网站也很棒(有助于数组问题,我没有意识到它保持完整字符串为0为孔)。

4 个答案:

答案 0 :(得分:3)

好吧,如果你的模式是:SOMETHING +(YEAR)那么你的正则表达式应该是这样的:

 #^(.+)\((\d{4})\)$#

说明:

 # -> pattern delimiter
 ^ -> beginning of string
 (.+) -> any character "." once or more "+"
 \( -> escape parenthesis character
 \d{4} -> four digits
 \) -> escape parenthesis character
 $ -> end of string

Example

答案 1 :(得分:1)

在这些方面寻找模式:

Alice in Wonderland (2010)
The movie (Has One of These) (2008)

您在问题中建议使用以下正则表达式:

([0-9]{4})$

匹配该行末尾的年份。 $实际上是行尾的标记,但)是正则表达式中的特殊字符,需要大幅缩减才能工作:

\(([0-9]{4})\)$
  ^         ^^ both brackets have been slashed to match them literally
  '- subgroup parenthesis.

或使用\d表示任何十进制数字:

\((\d{4})\)$

这将使子组1包含年份。

答案 2 :(得分:0)

This is one of the link where regex man be made

您还可以使用以下十进制数

\((\d{4})\)$

答案 3 :(得分:0)

这是一个在线正则表达式测试器,在学习正则表达式并对其进行测试时非常有用:HiFi Regex Tester