Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用什么Ruby正则表达式代码来获取;“看不见”;从输入;“看不见”吗;?_Ruby_Regex - Fatal编程技术网

我可以使用什么Ruby正则表达式代码来获取;“看不见”;从输入;“看不见”吗;?

我可以使用什么Ruby正则表达式代码来获取;“看不见”;从输入;“看不见”吗;?,ruby,regex,Ruby,Regex,我正在构建一个应用程序,它根据用户输入的电影返回结果。如果用户搞砸了,忘记划掉电影的标题,有没有办法我仍然可以接受输入并返回正确的数据?例如,“看不见”仍将被解释为“看不见” 如果没有字典和某种模糊搜索算法,这是不可能的。对于后者,请参见。没有正则表达式可以告诉您单词break应该在哪里。例如,如果输入为“offlight”,是否应该返回“offlight”或“Of Flight”?您可以获取一个字符串,并将\s*放在每个字符之间 因此,outofsight将转换为: o\s*u\s*t\s*o

我正在构建一个应用程序,它根据用户输入的电影返回结果。如果用户搞砸了,忘记划掉电影的标题,有没有办法我仍然可以接受输入并返回正确的数据?例如,“看不见”仍将被解释为“看不见”

如果没有字典和某种模糊搜索算法,这是不可能的。对于后者,请参见。

没有正则表达式可以告诉您单词break应该在哪里。例如,如果输入为“offlight”,是否应该返回“offlight”或“Of Flight”?

您可以获取一个字符串,并将
\s*
放在每个字符之间

因此,
outofsight
将转换为:

o\s*u\s*t\s*o\s*f\s*s\s*i\s*g\s*h\s*t


。。。并在视线之外匹配

没有任何正则表达式能够以一种好的、可靠的方式做到这一点。你可以试试像这样的搜索服务器

或者,您可以在GUI(如果您有)中对用户的输入执行自动完成,这样可以减少用户最终可能出现的一些常见错误

例子:
  • 用户想要搜索“看不见的”
  • 开始输入“out”
  • 将“看不见”视为建议
  • 从建议中选择“看不见”
  • 利润
    除非要存储一个或多个模式以匹配每个电影记录,否则不能使用正则表达式来实现这一点。那太傻了


    捕捉小拼写错误的更好方法是计算用户键入的内容和您的电影标题之间的距离。然而,当你的电影列表很大时,这将是一个相当缓慢的操作,因此你最好使用像Lucene/Solr这样擅长这类事情的专用搜索引擎。

    这是否实用?每个电影标题都必须成为这样一个正则表达式,然后对于每个搜索,每个正则表达式都必须经过测试!对于1000个电影标题,需要运行1000个正则表达式@acheong87这是对
    我可以使用什么Ruby Regex代码从输入“看不见”中获得“看不见”的回答?
    我不是指不尊重,但他的问题详细说明了一个一般目的,并且否认我的问题的有效性,因为你回答了一个非常具体的案例,这根本不合理。是的,您的建议对于匹配“看不见”的正则表达式非常好,无论间距如何。但他的问题是将不正确的用户数据(看不见)转换为正确的存储数据(看不见),而您将整个存储端转换为正则表达式IMHO的建议是不切实际的。不过,它确实激发了另一种解决方案:只需去掉两端的所有空格。@acheong87它将转换用户输入,而不是电影标题,不是吗?