我想写一个能够获取书籍/电影片名的正则表达式。
到目前为止,我用PHP编写了这个:
(?: # Start of group:
\b # Match start of a word
(?: # Start of inner group:
[A-Z]*
[A-Z][a-z]* # Either match an uppercase word
| # or
(?:a[nts]|the|by|for|i[nt]| # one of these "special" words
o[fnr]|to|up|and|but|nor)
) # End of inner group
\b # Match end of word
\s* # Match one or more whitespace characters
)+ # Match one or more of the above.
我的意见如下:
I watched the movie The Girl With the Dragon Tattoo but it wasn't very good.
匹配:
I
the
The Girl With the Dragon Tattoo but it
我知道这是一个复杂的问题,虽然我希望它只返回:
The Girl With the Dragon Tattoo
我会好的:
I
The Girl With the Dragon Tattoo
我怎样才能改变我的正则表达式来实现这个目标?
答案 0 :(得分:0)
根据我的理解,您希望匹配任何用户输入并查找书名或电影名称。
如果你有一个非常好的书籍/电影数据库,你可以做的就是创建算法。
例如,总是将输入设为小写,如果您在数据库中,则检查每个标题。
如果您设法找到匹配项:您可以匹配标题前面和后面的几个单词。您可以将它们保存到数据库。之后,当您检查输入并且找不到标题时,您可以根据之前的输入创建preg_match,并确定最接近标题的位置。
如果您很幸运,可以将新标题保存到数据库中。
我不认为这会有点接近良好的效果。