当前位置: 首页 > 知识库问答 >
问题:

解析搜索提示的正则表达式

危宜
2023-03-14

我的正则律很糟糕。我想建立一个智能搜索,在那里我可以给搜索引擎提示在哪个属性上搜索什么。

类似这样:

搜索输入:位置:伦敦

-

搜索输入:位置:纽约伦敦

-

搜索输入:位置:伦敦标签:栏

-

-

搜索输入:地点:伦敦,纽约标签:酒吧,俱乐部

-

-

我想知道正则表达式应该如何解析这样的用户输入?

共有3个答案

柴意智
2023-03-14

我最终使用了不同的方法。也许只是我没有正确地得到其他解决方案,但对我来说,似乎没有办法区分哪些目标词属于哪个键。

如果地点:伦敦,纽约标签:酒吧,俱乐部

将切换到标签:酒吧,俱乐部位置:伦敦,纽约

我现在该如何确定哪些目标词属于位置,哪些要标记?

所以我做的是:

var locationMatch = searchString.match(/location:(((?!tags:)[-A-Za-z0-9, ])+)/);
//locationMatch[1] are the target words for "location"

var tagsMatch = searchString.match(/tags:(((?!location:)[-A-Za-z0-9, ])+)/);
//tagsMatch[1] are the target words for "tags"

我想有一个更简单的方法,但我远不是正则表达式专业人士。

狄玉书
2023-03-14

我会用一点正则表达式和Split。

var input = 'location: London, New York tags: Bar, Club'; // example

var arrays = input.split(/\s*\w+:\s*/);

arrays.forEach(function (val, idx, arr) {
    arr[idx] = val.split(/,\s*/);
});
於乐
2023-03-14

如果您只是拆分字符串,如下所示:

> var s = "location: London, New York tags: Bar, Club";
> var splitted = s.split(/location: | tags: /);
> splitted[1].split(', ')
["London", "New York"]
> splitted[2].split(', ')
["Bar", "Club"]
 类似资料:
  • 问题内容: 我需要找到与特定正则表达式匹配的所有软件包: 基本上,包的名字应该与启动,并有后话。例如,以下软件包应匹配: 我可以做,但是有很多我不感兴趣的软件包。 是否提供通过正则表达式查找软件包的方法?或者,我应该只是通过管道传递结果来过滤掉无关的包? 此外,可能是一个的“交集” ,并有助于太。 问题答案: alecxe,我相信这是您要寻找的一线客。 如下面评论中铬酸盐所建议的那样,您可以根据需

  • 问题内容: 我需要在给定正则表达式的字符串中找到所有匹配项。我一直在这样做,直到遇到一个案例,它没有达到我的预期。例如: 在这种情况下,返回我需要的内容(最长的匹配项),但是行为却有所不同,尽管文档暗示它应该是相同的: 匹配所有出现的模式,而不仅仅是第一个。 为什么行为不同? 如何获得with (或其他方式)的结果? 问题答案: 好的,我从文档中查看发生了什么…… 如果该模式中存在一个或多个组,则

  • Java中的正则表达式问题。我正在从元素href属性中提取Id号。我在一个字符串中有一堆这样的链接:

  • 问题内容: 有什么方法可以在python中的流上使用正则表达式匹配吗?喜欢 而且我不想通过获取整个字符串的值来做到这一点。我想知道是否有任何方法可以在srtream上匹配正则表达式(即时)。 问题答案: 我有同样的问题。首先想到的是实现一个类,该类的作用类似于字符串,但仅从流中读取当前所需的数据(我通过重新实现并提取和缓冲字符直到访问的最高位置来完成此操作……)。 这没有解决(我从中得到了“ Ty

  • 问题内容: 我运行一个发现有任何字* .sql文件后跟字后面的字。该select语句可以跨越很多行,并且可以包含制表符和换行符。 我已经尝试了以下几种变体: 但是,这将永远持续下去。谁能用正确的语法帮助我? 问题答案: 无需安装grep变体pcregrep,您可以使用grep进行多行搜索。 说明: 激活grep的perl- regexp (正则表达式的强大扩展) 禁止在行尾换行,用空字符代替。也就