尝试了解preg_match,努力了解如何编写以及如何访问匹配的内容。例如:
我拥有的每个电影名称都采用格式 -
电影名称(年)
e.g。爱丽丝梦游仙境(2010)
我希望能够将电影标题变成与字符串不同的变量。
一些电影在年外有括号 - 如电影(其中一个)(2008)
我也在迭代一个字符串数组 - 所以我基本上需要使用preg_match来到\([0-9]{4}\)$
($
行的结尾标记?)然后没有那一年的字符串的其余部分以及两个变量。
有人可以帮忙吗?
编辑:嗯。我发誓我打字\。当我输入\(它进入(因为我没有双重逃脱。无论如何,非常感谢你们!你链接它的网站也很棒(有助于数组问题,我没有意识到它保持完整字符串为0为孔)。答案 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
答案 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)
答案 3 :(得分:0)
这是一个在线正则表达式测试器,在学习正则表达式并对其进行测试时非常有用:HiFi Regex Tester。