gpt4 book ai didi

php - 解析搜索字符串

转载 作者:可可西里 更新时间:2023-11-01 00:27:39 25 4
gpt4 key购买 nike

我有搜索字符串,类似于下面的字符串:

energy food "olympics 2010" Terrorism OR "government" OR cups NOT transport

我需要用 PHP5 解析它以检测内容是否属于以下任何集群:

  • AllWords 数组
  • AnyWords 数组
  • NotWords 数组

这些是我设定的规则:

  1. 如果在单词或引用的单词之前或之后有 OR 如果属于任何词。
  2. 如果它在单词或引用的单词之前有 NOT,则它属于 NotWords
  3. 如果它在单词或引用的短语之前有 0 个或更多空格属于 AllWords。

所以最终结果应该类似于:

AllWords: (energy, food, "olympics 2010")
AnyWords: (terrorism, "government", cups)
NotWords: (Transport)

执行此操作的好方法是什么?

最佳答案

如果您想使用 Regex 执行此操作,请注意您的解析将在愚蠢的用户输入(用户,而不是输入 =) 上中断)。

我会尝试以下正则表达式。

非文字:

(?<=NOT\s)\b((?!NOT|OR)\w+|"[^"]+")\b

所有单词:

(?<!OR\s)\b((?!NOT|OR)\w+|"[^"]+")\b(?!\s+OR)

任何词:嗯..剩下的。 =) 它们不容易被发现,因为我不知道如何将“OR behind it or in it front”放入正则表达式中。也许你可以加入三个正则表达式的结果

(?<=OR\s)\b((?!NOT|OR)\w+|"[^"]+")\b(?!\s+OR)
(?<=OR\s)\b((?!NOT|OR)\w+|"[^"]+")\b(?=\s+OR)
(?<!OR\s)\b((?!NOT|OR)\w+|"[^"]+")\b(?=\s+OR)

问题:修饰词和表达式之间只需要一个空格。 PHP 只支持固定长度表达式的后视,所以我看不出有什么办法,抱歉。您可以只使用 \b(\w+|"[^"]+")\b 来拆分输入,然后手动解析结果数组。

关于php - 解析搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com