我有一些上传到我网站的文件,我想将它们与已知的文件模板进行比较,以便进行匹配。
例如,我可以使用以下“模板”的文本文件。
template.txt
Hi, my name is (\w+), and I like (\w+).
然后,说有人上传以下文件。
bio.txt
Hi, my name is James, and I like cats.
这将匹配模板,从而触发与该匹配相关联的规则。
显然,这是一个非常的淡化示例,但应该明白这一点。真正的正则表达式将更具表现力,以匹配任何特定的URL,比特币地址等特定的东西(我已经有所有这些的表达式)。
我已经尝试过正则表达式,因为这是我如何做其他更复杂的匹配上传文件,但是当遇到诸如新行和逃避大量字符之类的挑战时,这真的变得很麻烦。例如,我有20行+文件作为模板 - 将所有换行符转换为\n
,并且转义所有括号,括号等是疯了,更不用说这感觉超级矫枉过正了?正则表达式似乎不喜欢使用多行来表示模式部分。
有没有更好的方法将此“模板”文件与提供的文件相匹配?我为“比较文本文件”所做的任何搜索都给了我更多的逐行比较,例如显示代码行的差异。我需要与预期的模式完全匹配;如果模板不匹配,那么整体结果当然不应该匹配。
我目前确实有这样的设置与正则表达式,我基本上只是通过preg_match()
抛出它们,但是我应该使用更好,更统计的方法解决这个问题吗?
我的网站是用PHP编程的,所以我需要实现它。害怕我无法访问共享(廉价)主机的shell。