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

在Ruby中检查字符串是否匹配正则表达式的最快方法?

左丘阳晖
2023-03-14

在Ruby中检查字符串是否匹配正则表达式的最快方法是什么?

我的问题是,我必须在一个庞大的字符串列表中“eGrep”,以找到哪些字符串与运行时给出的正则表达式相匹配。我只关心字符串是否匹配正则表达式,而不是它匹配的位置,也不关心匹配组的内容是什么。我希望这个假设可以用来减少我的代码在匹配正则表达式上花费的时间。

我用

pattern = Regexp.new(ptx).freeze

是否有其他的技巧或捷径可以用来使这个测试更快?

共有1个答案

芮星海
2023-03-14

从Ruby 2.4.0开始,您可以使用regexp#match?:

pattern.match?(string)

regexp#match?在2.4.0的发行说明中作为性能增强被显式列出,因为它避免了由其他方法(如regexp#match=~)执行的对象分配:

regexp#match?
添加了regexp#match?,它执行regexp匹配,而不创建反向引用对象,并更改$~以减少对象分配。

 类似资料:
  • 问题内容: 我想使用JavaScript(可以与jQuery一起使用)进行一些客户端验证,以检查字符串是否与正则表达式匹配: 理想情况下,它将是一个返回true或false的表达式。 我是JavaScript新手,我需要做什么?似乎要检查字符串的一部分是否匹配正则表达式,而不是整个字符串。 问题答案: 使用,如果你想要的是一个布尔结果: …并且您可以从正则表达式中删除,因为您无需捕获。

  • 问题内容: 我有一个字符串。如何检查字符串是正则表达式还是包含正则表达式还是正常字符串? 问题答案: 您唯一可以做的可靠检查是,如果语法正确的是正则表达式: 但是请注意,即使对于像和这样的字符串,也会导致这种情况,因为从技术上讲,它们是有效的正则表达式。 唯一会返回的情况是不是有效正则表达式的字符串,例如或或。

  • 问题内容: 我在尝试将我的javascript regex经验转移到Python时遇到了麻烦。 我只是想让它工作: …但是它打印无。如果我做: 它匹配…默认情况下是否匹配字符串的开头?当匹配时,如何使用结果? 我如何进行第一场比赛?是否有比python网站提供的文档更好的文档? 问题答案: 隐式添加到您的正则表达式的开头。换句话说,它仅在字符串的开头匹配。 将在所有位置重试。 一般来说,建议您在需

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)

  • 问题内容: 我正在寻找Java代码来检查字符串是否为有效的XML。 问题答案: 用正则表达式验证XML是不可能的。XML不是常规语言。 使用XML解析器尝试将字符串解析为XML,或者对照模式(例如DTD或XSD文件)验证XML文档。

  • 问题内容: 在PHP脚本中,应该使用什么正则表达式来检查字符串中不匹配的括号?我要允许的内容包括: 还行吧) 还行吧) 我要防止的事情: 这是不好的( 这也是(不好 这是(不好(太)了 谢谢! 更新:你们都摇滚。使用正则表达式执行此操作似乎比应做的要难,而这些第二级答案正是使stackoverflow变得漂亮的原因。感谢您的链接和伪代码。我不确定要给谁答案,所以我向所有我不能接受的人表示歉意。 问