我需要根据一个相当复杂的查询来过滤字符串集合,它的“原始”形式如下:
nano* AND (regulat* OR *toxic* OR ((risk OR hazard) AND (exposure OR release)) )
以下是需要匹配的字符串示例:
Workshop on the Second Regulatory Review on Nanomaterials, 30 January 2013, Brussels
所以,我需要使用AND OR和通配符进行匹配 - 所以,我想我需要在JavaScript中使用正则表达式。
我已经正确地循环、过滤和一般工作,但我100%确定我的正则表达式是错误的 - 有些结果被错误地省略了 - 在这里:
/(nano[a-zA-Z])?(regulat[a-zA-Z]|[a-zA-Z]toxic[a-zA-Z]|((risk|hazard)*(exposure|release)))/i
非常感谢您的帮助 - 我无法正确抽象我的思维以理解这个语法!
更新:
有些人指出正则表达式构建的顺序的重要性,但是我无法控制将被搜索的文本字符串的顺序,因此我需要找到一个可以在任何顺序下工作的解决方案。
更新:
最终使用了PHP解决方案,由于Twitter API 1.0已经被弃用,请参见pastebin中的示例函数(我知道在这里粘贴代码更好,但是有很多...):
function: http://pastebin.com/MpWSGtHK usage: http://pastebin.com/pP2AHEvk
感谢所有的帮助。