首页
学习
活动
专区
工具
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值是多少,成功匹配返回值都是匹配在原始字符串绝对起始位置。...第六章,使用正则表达式匹配可以更灵活地进行搜索匹配这种灵活性代价是参数配置增加和速度下降。大多数情况下,是利大于弊,正则表达式是首选。...默认情况下是删除所有空白字符,您可以指定一个包含您想要删除任何字符字符串

93420

一天学完sparkScala基础语法教程六、字符串(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) 测试此字符串是否指定前缀开始

54820
  • MySQL全文索引

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

    59030

    MySQL全文索引

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

    67640

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

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

    69350

    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 替换此字符串匹配给定正则表达式第一个子字符串...)测试此字符串从指定索引开始字符串是否指定前缀开始。

    95020

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

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

    90120

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

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

    83900

    字符串之正则表达式

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

    3.3K20

    正则表达式【Pattern 】

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

    48540

    【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.

    30920

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

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

    95830

    手工检测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.1K70

    JavaScript基础-字符串操作方法

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

    9310

    正则表达式学习笔记

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

    41520

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

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

    1.9K40

    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

    93720

    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....(),可以提取出字符串定子串。

    65960

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

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

    95520

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

    [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
    领券