首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Rails中匹配以给定子字符串结尾的字符串,但某些情况除外

在Rails中,您可以使用正则表达式来匹配以给定子字符串结尾的字符串,并使用否定预测先行断言来排除某些情况。以下是一个示例:

代码语言:ruby
复制
# 假设您要匹配以 "ing" 结尾的字符串,但排除包含 "not" 的字符串
pattern = /(?<!not).*ing$/

# 测试字符串
test_string = "I am coding"
test_string2 = "I am not coding"

# 匹配结果
match = test_string.match(pattern)
match2 = test_string2.match(pattern)

# 输出结果
puts match ? "匹配成功" : "匹配失败"
puts match2 ? "匹配成功" : "匹配失败"

在这个示例中,我们使用了一个否定预测先行断言 (?<!not),它会排除包含 "not" 的字符串。正则表达式的其余部分 .*ing$ 用于匹配以 "ing" 结尾的字符串。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

svlib文档翻译(第五章)

然而,经验表明,内置方法不足以满足工作中的字符串处理任务,svlib提供了进一步的操作集来帮助满足这些需求。 在大多数情况下,字符串操作有两种不同的形式,用户可以自由选择更适合自己需要的形式。...它返回子字符串的最左边字符在原始字符串中的位置。如果搜索失败(在原始字符串中没有出现子字符串),则函数返回-1。这个方法的搜索是精确的文字匹配,不使用通配符或正则表达式匹配。...不管ignore的值是多少,成功匹配后的返回值都是匹配在原始字符串中的绝对起始位置。...在第六章中,使用正则表达式匹配可以更灵活地进行搜索匹配,但这种灵活性的代价是参数配置增加和速度下降。在大多数情况下,是利大于弊的,正则表达式是首选。...默认情况下是删除所有空白字符,但您可以指定一个包含您想要删除的任何字符的字符串。

96420

一天学完spark的Scala基础语法教程六、字符串(idea版本)

在 Scala 中,String 是一个不可变的对象,所以该对象不可被修改。这就意味着你如果修改字符串就会产生一个新的字符串对象。 但其他对象,如数组就是可变的对象。...18 int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引 19 int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引...str) 返回指定子字符串在此字符串中最右边出现处的索引 24 int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索...replacement 替换此字符串匹配给定的正则表达式的第一个子字符串 32 String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串 33 String[]...split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串 34 boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始

55820
  • MySQL全文索引

    MySQL在使用LIKE进行模糊匹配查询的时候,字段索引会失效,因此在数据量较大的情况下,LIKE查询效率极低,就可以使用全文索引(FullText)进行优化。...全文索引(FullText)是将存储于数据库中的整本书或整篇文章中的任意信息查找出来的技术。它可以根据需要获得全文中有关章、节、段、句、词等信息,也可以进行各种统计和分析。...(自有文本)中的短语,没有特殊运算符,但双引号(“)除外。...SELECT * FROM `articles` WHERE MATCH(content) against ('PHP' in NATURAL LANGUAGE mode); 布尔全文索引 使用此修饰符,某些字符在搜索字符串中的单词的开头或结尾处具有特殊含义...在以下查询中, +和-运算符分别表示必须存在或不存在单词才能进行匹配。

    69640

    MySQL全文索引

    MySQL在使用LIKE进行模糊匹配查询的时候,字段索引会失效,因此在数据量较大的情况下,LIKE查询效率极低,就可以使用全文索引(FullText)进行优化。...全文索引(FullText)是将存储于数据库中的整本书或整篇文章中的任意信息查找出来的技术。它可以根据需要获得全文中有关章、节、段、句、词等信息,也可以进行各种统计和分析。...(自有文本)中的短语,没有特殊运算符,但双引号(“)除外。...SELECT * FROM `articles` WHERE MATCH(content) against ('PHP' in NATURAL LANGUAGE mode);布尔全文索引使用此修饰符,某些字符在搜索字符串中的单词的开头或结尾处具有特殊含义...在以下查询中, +和-运算符分别表示必须存在或不存在单词才能进行匹配。

    60830

    这可能是迄今为止最好的一篇正则入门教程-下

    默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。...人若无名,便可专心练剑;物若无名,便可随意取舍…… 接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言...以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。...就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。 现在看看懒惰版的例子吧: a.*?b 匹配 最短的,以a开始,以b结束的字符串。...比如\cC代表Ctrl+C\A字符串开头(类似^,但不受处理多行选项的影响)\Z字符串结尾或行尾(不受处理多行选项的影响)\z字符串结尾(类似$,但不受处理多行选项的影响)\G当前搜索的开头\p{name

    70950

    Scala 字符串(十)

    在 Scala 中,字符串的类型实际上是 Java String,它本身没有 String 类。 在 Scala 中,String 是一个不可变的对象,所以该对象不可被修改。...这就意味着你如果修改字符串就会产生一个新的字符串对象。 但其他对象,如数组就是可变的对象。接下来我们会为大家介绍常用的 java.lang.String 方法。...indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引 19 int indexOf(String str, int fromIndex)返回指定子字符串在此字符串中第一次出现处的索引...替换此字符串所有匹配给定的正则表达式的子字符串 31 String replaceFirst(String regex, String replacement)使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串...)测试此字符串从指定索引开始的子字符串是否以指定前缀开始。

    96120

    正则表达式30分钟入门教程 转

    \b是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。...元字符^(和数字6在同一个键位上的符号)和$都匹配一个位置,这和\b有点类似。^匹配你要用来查找的字符串的开头,$匹配结尾。...]+>匹配用尖括号括起来的以a开头的字符串。 后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。...人若无名,便可专心练剑;物若无名,便可随意取舍…… 接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言...就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧: a.*?b匹配最短的,以a开始,以b结束的字符串。

    91120

    正则表达式30分钟入门教程

    \b是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。...^匹配你要用来查找的字符串的开头,$匹配结尾。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。...]+>匹配用尖括号括起来的以a开头的字符串。 后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。...零宽断言 接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。...就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧: a.*?b匹配最短的,以a开始,以b结束的字符串。

    84800

    字符串之正则表达式

    前言: 授人以鱼不如授人以渔,大家在编程的时候总会遇到要查找某些复杂规则的字符串,例如在 linux 系统中,需要对多个文件里的某段代码进行替换,你是不是还在每个文件打开逐一目标替换?...通常,处理正则表达式的工具会提供一个忽略大小写的选项,如果选中了这个选项,它可以匹配 me, ME, Me, mE 这四种情况中的任意一种。...]+> 匹配用尖括号括起来的以 a 开头的字符串 8、分组 我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?...9、贪婪与懒惰 当正则表达式中包含能接受重复的限定符时,通常的行为是匹配尽可能多的字符。以这个表达式为例:b.*c ,它将会匹配最长的以 b 开始,以 c 结束的字符串。...Multiline 更改 ^ 和 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。在此模式下 的精确含意是:匹配 \n 之前的位置以及字符串结束前的位置.)

    3.3K20

    正则表达式【Pattern 】

    可以与任何字符(行结束符除外)匹配。 默认情况下,正则表达式 ^ 和 忽略行结束符,仅分别与整个输入序列的开头和结尾匹配。...如果激活 MULTILINE 模式,则 ^ 在输入的开头和行结束符之后(输入的结尾)才发生匹配。处于 MULTILINE 模式中时, 仅在行结束符之前或输入序列的结尾处匹配。...+ 相匹配,会将第二组设置为 "b"。在每个匹配的开头,所有捕获的输入都会被丢弃。 以 (?) 开头的组是纯的非捕获 组,它不捕获文本,也不针对组合计进行计数。...在此类中,八进制转义必须始终以零开头。...在此类中,嵌入式标志始终在它们出现的时候才起作用,不管它们位于顶级还是组中;在后一种情况下,与在 Perl 中类似,标志在组的结尾处还原。

    50740

    【Java】String类

    重新赋值时: 不是覆盖原来的值,而是在常量池中给新字符开辟一个新的空间保存,并将这个空间地址指向这个引用。原来的字符常量依然存在,便于复用。...一个对象是我们new的对象在堆中,用于保存字符串地址 另一个对象是字符串常量池的byte[]/char[]对象,用于保存字符串地址 字符串被单独放到了一块空间,并没有保存到某一个对象中,方便复用。...情况1:常量 + 常量:结果仍在常量池中(注:可能使字面量常量,也可能是final修饰的常量) 情况2:常量 + 变量 或 变量 + 变量:都会new一个新的字符串,保存在堆空间,返回堆空间地址 情况3...开头与结尾 (28)boolean startsWith(xx):测试此字符串是否以指定的前缀开始 (29)boolean startsWith(String prefix, int toffset)...:测试此字符串从指定索引开始的子字符串是否以指定前缀开始 (30)boolean endsWith(xx):测试此字符串是否以指定的后缀结束 8.

    31320

    正则表达式30分钟入门教程

    ^匹配你要用来查找的字符串的开头, $匹配结尾。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为 5位到 12位数字时,可以使用: ^\d{5,12}$。...]+>匹配用尖括号括起来的以 a开头的字符串。 后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。...接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。...就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧: a.*?b匹配最短的,以 a开始,以 b结束的字符串。...如果匹配成功,则 search()返回正则表达式在字符串中首次匹配项的索引。否则,返回 -1。

    97030

    手工检测Web应用指纹的一些技巧

    对于后三种语言,一些常见的框架包括 Ruby-on-Rails, .Net MVC, Django 等。 1.4 后端存储技术 对于大多数中小型网站,数据库和Web服务器是在同一台主机的。...需要注意的是(低概率事件),某些脑洞奇特的管理员/开发者/运维可能会将Java编写的程序用.php的结尾,或者让某些PHP应用使用.do结尾。...除此以外,对于多数网站的后台管理页面通常都属于某些常用的路径(即包含在字典中),因此我们在大多数情况可以通过目录扫描来获得。如果已知CMS类型,可以直接参考文档来判断后台默认管理页面的路径。...或者在URL中删除部分参数,删除部分cookie中的参数(chrome 插件 edit this cookie)。 不熟练的Django开发者可能会开启调试模式 ?...3.2.2 特殊的class HTML 中存在特定 class 属性的某些 div 标签。

    3.2K70

    JavaScript基础-字符串操作方法

    在JavaScript编程中,字符串是最基本的数据类型之一,用于存储文本信息。掌握字符串的操作方法对于处理文本数据至关重要。...本文将深入浅出地介绍JavaScript中字符串的基本操作,揭示常见问题与易错点,并通过实例代码展示如何避免这些问题,提升代码的健壮性和效率。...concat:连接多个字符串。 startsWith、endsWith:判断字符串是否以指定内容开头或结尾。 repeat:重复字符串若干次。 includes:判断是否包含指定子串。...三、常见问题与易错点 易错点1:忽视字符串不可变性 问题:试图修改字符串中的字符,但字符串是不可变的。 避免方法:使用字符串方法返回新字符串,而不是直接修改。...记住,虽然字符串是不可变的,但通过返回新字符串的方式,我们可以灵活地实现各种文本处理需求。希望本文能帮助你在JavaScript字符串操作的道路上更进一步。

    12110

    正则表达式30分钟入门教程--deerchao

    \b是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。...元字符^(和数字6在同一个键位上的符号)和$都匹配一个位置,这和\b有点类似。^匹配你要用来查找的字符串的开头,$匹配结尾。...]+>匹配用尖括号括起来的以a开头的字符串。 后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。...人若无名,便可专心练剑;物若无名,便可随意取舍…… 接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言...就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧: a.*?b匹配最短的,以a开始,以b结束的字符串。

    2K40

    正则表达式学习笔记

    简单来说,正则表达式就是做了这么一个事情:制定一个规则,而后根据规则去文本中寻找符合规则的字符串。 它可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等等。...元字符 上面展示了使用正则表达式的一个最简单的例子,有时候,我们可以直接制定需要寻找的字符串,就上面展示的那样;但是考虑另外一种情况,我们只记得要寻找的字符串的开头/结尾,但忘记了剩下的字符是什么;或者说如果我想要从一段文本中找到所有的手机号码...#comment) 提供注释 零宽断言 接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言...这被称为贪婪匹配。 例如,下面的这个例子中 a.*b 能够匹配最长的,以 a 开始,以 b 结束的字符串: 正则表达式: a....就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。 a.*?b 能够匹配最短的,以 a 开始,以 b 结束的字符串: 正则表达式: a.*?

    43120

    Java String类

    18 int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。...19 int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。...public int indexOf(int ch, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回...int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。...int indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1

    94720

    Asp.Net Web API 2第六课——Web API路由和动作选择

    你可以用自己的自定义行为来替换这一过程中的某些部分。在本文中,我将来描述默认的行为。在文章结尾,我会注明可以在什么地方自定义行为。...模板中的文字必须严格匹配。一个占位符可以匹配任何值,除非你指定了约束。这个框架不会匹配URI另外的部分,例如主机名或者一个查询字符串。这个框架会选择路由表中第一个匹配的路由。...b:从这个列表中,试着在路由字典或是在URI查询字符串中,找到每个参数的匹配。匹配是与大小写无关的,且与参数顺序无关。   ...2.动作名必须匹配路由字典中的“action”条目,如果有。 3.对于动作的各个参数,如果参数取自URI,那么该参数名必须在路由字典或URI查询字符串中能够被找到。(可选参数和复杂类型除外)。...该路由字典并未包含查询字符串参数“version”和“details”,但这些将在动作选择期间考虑。

    96520

    JavaScript正则表达式进阶指南

    *g/会匹配“以F开头,以g结尾的字符串”,因此可以匹配"Hello, Fundebug!"中的Fundebug,exec方法会返回一个数组,其第一个元素为所匹配的子字符串。 /F....[0] // 'Fundebug' 非贪婪匹配 默认情况下,正则表达式的量词*、+、?、{},都是进行贪婪匹配,即匹配尽可能多的字符。 例如,正则表达式/....+s/匹配的是“以空格符结尾的字符串”,我们用它来匹配苹果公司创始人乔布斯在斯坦福大学演讲的名言“You time is limited, so don’t waste it living someone...因为^匹配的整个字符串的开始,而是不是每一行的开始。 正则表达式指定m选项,即可支持多行匹配,这时^和$匹配的是每一行的开始和结束,因此正确的正则表达式是/^forever....(),可以提取出字符串中的特定子串。

    66460

    这么多年了,还搞不懂正则语法?

    [a-gA-C0-7] 匹配字符串中的小写字母a~g集合,大写字母A~C集合或数字0~7集合中的任意字符 [^a-zA-Z] 匹配字符串中非英文大小写字母的字符 (在指定字符集合中,使^字符,意味着匹配指定字符集的补集...'; sentence.match(/\d$/) // 匹配字符串末尾是数字的情况 sentence.match(/\d$/m) // 多行的情况下匹配第一个满足行末尾是数字的情况 sentence.match...前一字符的匹配数量为0或1个;前一个字符(item,项)可有可无 ^ 字符串的起始符号 $ 字符串的结尾符号 ....在这个例子中,将匹配到.edu 最后是一个$符号,表明字符串结尾 这部分个人觉得作者说的有部分不符合规则,在第4步,该规则应该是会匹配到.school.edu 运行结果 这就是Regex!...如上所示,Regex最常用于需要安全校验的情况。当开发人员需要匹配URL或通过某些文本进行解析或提取某些信息(例如yyyy-mm-dd的日期格式)时,也可以用正则来实现该功能。正则表达式无处不在!

    2.3K30
    领券