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

关于perl regexp的奇怪结果 - 结束字符串锚点并且立刻不同意

Perl正则表达式(regexp)是一种强大的模式匹配工具,用于在字符串中查找、替换和提取特定模式的文本。它使用一种灵活的语法来描述模式,并提供了许多特殊字符和元字符来表示不同的模式匹配规则。

关于"结束字符串锚点并且立刻不同意"的奇怪结果,这是因为在Perl正则表达式中,"结束字符串锚点"表示匹配字符串的结尾位置,而"立刻不同意"则表示不匹配指定的字符或模式。当这两个元素连在一起使用时,它们的行为会产生一些奇怪的结果。

具体来说,当使用"结束字符串锚点并且立刻不同意"时,正则表达式引擎会尝试在字符串的结尾位置进行匹配,并且如果结尾位置的字符与"立刻不同意"的字符或模式匹配,则整个匹配失败。这种行为可能会导致一些意外的结果,特别是在处理特殊字符或模式时。

举个例子,假设我们有一个字符串"abc",并且我们使用正则表达式"abc$^d"来匹配它。在这个正则表达式中,"$"表示结束字符串锚点,"^d"表示不匹配字符"d"。根据正则表达式的定义,我们期望这个匹配失败,因为字符串的结尾字符是"c",而不是"d"。

然而,由于"结束字符串锚点并且立刻不同意"的行为,实际的匹配结果却是成功的。这是因为正则表达式引擎在尝试匹配字符串结尾位置时,发现结尾字符"c"与"立刻不同意"的字符"d"不匹配,因此整个匹配成功。

这种奇怪的结果可能会导致一些混淆和错误,因此在使用"结束字符串锚点并且立刻不同意"时,建议谨慎考虑其行为,并确保理解和预期匹配结果。

关于Perl正则表达式的更多信息和用法,可以参考腾讯云的产品文档:Perl正则表达式

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

相关·内容

精通正则表达式 - 打造高效正则表达式

/ 行锚点优化         这种优化遇到末尾 或者其他结束锚点(\Z、\z等)的正则表达式时,能够从字符串末尾倒数若干字符的位置开始尝试匹配。...但奇怪的是,这个微小而且看起来有益的改动反而会把表达式的速度降低几个数量级。怎么会这样呢?原来在这里有若干因素共同作用,使用非捕获型括号时,“字符串结束 / 行锚点优化”会被关闭。...将锚点独立出来         某些效果明显的内部优化措施是利用锚点,例如 ^、$ 和 \G,把表达式“绑定”在目标字符串的某一端,使用这些优化时,有一些技巧能够提供帮助。...目前这种优化还只适用于 Perl,因为现在只有 Perl 提供了“字符串结束 / 行锚点优化”。优化对 (...|...) 起作用,对 (...|...) 不起作用。 4. 忽略优先还是匹配优先?...但是循环消除之后,表达式能够在有限的时间内结束匹配,不但效率高得多,并且避免了无休止匹配。

78470

YAML基础语法

应用场景: ansible清单也支持YAML的语法,可以使用YAML语法编写清单从而管理受管主机; docker-compose的DockerFile的文件内容中使用它; 如Perl、Python、PHP...(文档结束) , !!...引用重复的内容在YAML中可以使用&来完成锚点定义,使用*来完成锚点引用 #在hr中,使用&SS为Sammy Sosa设置了一个锚点(引用)名称为SS,在rbi中使用*SS完成了锚点使用 hr: - Mark...主要和锚点配合使用,可以将一个锚点内容直接合并到一个对象中。 来看一个示例: #在merge中,定义了四个锚点,分别在sample中使用。..., *BIG] 意思是联合引用{x: 1,y: 2}和{r: 10},并且合并到sample2中,那么合并的结果为:sample2={other=haha, x=1, y=2, r=10} sample2

2.7K00
  • Kubernetes YAML 学习,提升编写能力

    : 'use.perl.org' } } 数据结构 对象: 键值对的字典 数组: 一组按次序排列的列表 纯量: 单个的且不可再分的值 # 纯量 hello # 数组 - Cat - Dog -...pairs 键值列表 YAML 中的纯量 纯量是最基本的且不可再分的值 字符串 # 不适用引号 name: Tom # 使用单引号 name: 'Tom' # 使用双引号 name: "Tom" 布尔值...# +表示保留文字块末尾的换行 # -表示删除字符串末尾的换行 value: | hello value: |- hello value: |+ hello # 输出结果 # hello\n hello...锚点与引用 # 复制代码注意*引用部分不能追加内容 # 使用&定义数据锚点,即要复制的数据 # 使用*引用锚点数据,即数据的复制目的地 name: &a yaml book: *a books:...regexp: simple: !!

    57720

    Kubernetes 之 YAML 语法

    : 'use.perl.org' } } 数据结构 -对象: 键值对的字典 -数组: 一组按次序排列的列表 -纯量: 单个的且不可再分的值 # 纯量 hello # 数组 - Cat - Dog...- Goldfish # 对象 animal: pets 引号区别 单引号(''): 特殊字符作为普通字符串处理 双引号(""): 特殊字符作为本身想表示的意思 # 单引号 name: 'Hi,\...Boolean true YAML 中的纯量 纯量是最基本的且不可再分的值 字符串 # 不适用引号 name: Tom # 使用单引号 name: 'Tom' # 使用双引号 name: "Tom...# +表示保留文字块末尾的换行 # -表示删除字符串末尾的换行 value: | hello value: |- hello value: |+ hello # 输出结果 # hello\n hello...锚点与引用 # 复制代码注意*引用部分不能追加内容 # 使用&定义数据锚点,即要复制的数据 # 使用*引用锚点数据,即数据的复制目的地 name: &a yaml book: *a books:

    60310

    精通正则表达式 - 正则表达式实用技巧

    确定应用场合         上面的正则表达式必须借助锚点 ^ 和 $ 才能正常工作,否则可能匹配错误。 mysql> set @r:='(?!0+\\.)([01]?\\d\\d?...-------------+ 1 row in set (0.00 sec)         这次锚点不仅仅是一种优化措施,确实需要在结尾设置一个锚点以保证匹配的正确。...即便是短短的 '/usr/local/bin/perl',在获得匹配结果之前也要进行四十多次回溯。考虑从 local 开始的尝试。...而第三个分支 '[^\'">]' 只接受括号外的 * 的限定,给它添加一个加号得到 '([^\'">]+)*',可能导致非常奇怪的结果。        ...这个加号不会导致奇怪的结果,因为这外面没有直接作用于整个多选结构的量词。

    93940

    JavaScript(RegExp正则匹配)

    /s$/; 这行代码创建一个新的RegExp对象,并将它赋给变量parttern.这个特殊的RegExp对象和所有以字母"s"结尾的字符串都匹配.用RegExp()也可以定义 一个等价的正则表达式,代码如下...JavaScript采用的是Perl语言正则表达式语法的一个相当完整的子集.....因为它们将模式定位在检索字符串中的一个特定位置.最常用的锚元素是 ^, 它使模式依赖于字符串的开头,而锚元素$则使模式定位在字符串的末尾....结果表达式是 /\b java \b/.....如果将构造函数 RegExp 的静态属性 multiline 设置为 true ,那么模式匹配将以多行的模式进行.在这 种模式下,锚字符 ^ 和 $ 匹配的不只是检索字符串的开头和结尾,还匹配检索字符串内部的一行的开头和结尾

    4.3K50

    刨根究底正则表达式之二——正则表达式基础

    2)匹配位置的语法元素 (1)  下面这些元字符: ^、$ (2)  下面这些元转义序列: 锚点:\A、\z、\Z、\b(字符组外部)、\b{}、\B、\B{}、\G; 其他:\。...从正则表达式的角度来看,字符串通常由位置和字符所共同构成,但空字符串仅由单个位置构成(该位置既是空字符串的起始位置,也是空字符串的结束位置,可同时匹配表示字符串起始位置的元字符^和表示字符串结束位置的元字符...对于字符串“Regex”而言,是由五个字符以及六个位置构成的,理解这一点对于正则表达式的匹配原理的理解很重要。 2....查找匹配过程中,下一次匹配的起始位置与前一次匹配的结束位置往往是相同的: 正则式:/regex/ 字符串:regexregex 找到第一个子字符串"regex",开始于位置0结束于位置5 找到第二个子字符串...正则表达式匹配过程中,若其中的某个语法元素匹配到的是字符,而非位置,并且在字符串中移动了匹配定位指针,此时可分为两种情况: 1)  所匹配的字符被保存到了最终的匹配结果中(即返回了所匹配到的字符),那么就认为该子表达式消费了这些字符

    1.2K50

    【生信菜鸟经】如何系统入门Perl

    2 知识要点 在看书的同时,你必须记住和熟练使用的知识点是下面这些: 理解perl里面的三种变量表示方式 $ 表示单个变量 用单双引号区别,q(),qq() @ 表示多个变量组成的数组...个数据处理任务(欢迎大家去练习) 变量内容交换,字符型转为数值型,字符串转为字符数组,字符串变量,heredoc,字符串分割,字符串截取,随机数生成,取整,各种概率分布数,多维矩阵如何操作,进制转换,hash...外表上看起来都是一个$ @ %符号后面加上一大堆的奇奇怪怪的字符,表示一些特殊变量,这也是perl语言饱受诟病的原因。但是有些非常重要,懂了它之后写程序会方便。...学习单行命令的前提是掌握非常多的奇奇怪怪的perl自定义变量和perl的基础语法,用熟练了之后就非常方便,很多生物信息学数据处理过程我现在基本不写脚本,都是直接写一行命令,完全代替了shell脚本里面的...://www.cs.tut.fi/~jkorpela/perl/regexp.html https://support.sas.com/rnd/base/datastep/perl_regexp/regexp-tip-sheet.pdf

    1.8K90

    玩转JavaScript正则表达式

    不止应用于编程语言中:JavaScript、JAVA、Perl、PHP、C#......由于正则表达式的流派很多,这篇文章主要是描述JavaScript中的正则表达式。 介绍点语法 定义 所谓正则表达式,就是一种描述字符串结构模式的形式化表达方法。...:”形式的分组不编码 锚字符 字符 匹配 ^ 匹配字符串的开头,在多行检索中,匹配一行的开头 $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾 \b 匹配一个单词的边界,简而言之,就是位于字符\w和字符...匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束 用于模式匹配的String方法 方法 意义 String.search() 参数:一个正则表达式。...返回true or false toString() 转换成字符串形式 关于RegExp对象的属性和方法多说两句: RegExp对象的属性index包含了发生匹配的字符位置,属性input引用的是正在检索的字符串

    1.4K50

    玩转 JavaScript 正则表达式

    能够帮助你进行各种字符串验证。 不止应用于编程语言中:JavaScript、JAVA、Perl、PHP、C#...。...由于正则表达式的流派很多,这篇文章主要是描述JavaScript中的正则表达式。 介绍点语法 定义 所谓正则表达式,就是一种描述字符串结构模式的形式化表达方法。...:”形式的分组不编码 锚字符 字符 匹配 ^ 匹配字符串的开头,在多行检索中,匹配一行的开头 $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾 \b 匹配一个单词的边界,简而言之,就是位于字符\w和字符...匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束 用于模式匹配的String方法 方法 意义 String.search() 参数:一个正则表达式。...返回true or false toString() 转换成字符串形式 关于RegExp对象的属性和方法多说两句: RegExp对象的属性index包含了发生匹配的字符位置,属性input引用的是正在检索的字符串

    4.3K00

    玩转JavaScript正则表达式

    能够帮助你进行各种字符串验证。 不止应用于编程语言中:JavaScript、JAVA、Perl、PHP、C#......由于正则表达式的流派很多,这篇文章主要是描述JavaScript中的正则表达式。 介绍点语法 定义 所谓正则表达式,就是一种描述字符串结构模式的形式化表达方法。...:”形式的分组不编码 锚字符 字符 匹配 ^ 匹配字符串的开头,在多行检索中,匹配一行的开头 $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾 \b 匹配一个单词的边界,简而言之,就是位于字符\w和字符...匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束 用于模式匹配的String方法 方法 意义 String.search() 参数:一个正则表达式。...返回true or false toString() 转换成字符串形式 关于RegExp对象的属性和方法多说两句: RegExp对象的属性index包含了发生匹配的字符位置,属性input引用的是正在检索的字符串

    1.1K30

    加强版正则表达式,邮箱,手机号防呆好用得不得了

    而如果手动处理,写普通的if else语句去一点点判断字符串是否相等,则是无法实现的。 而用正则,就可以实现如此多的,繁杂的,极度复杂的,各种需求。 首先来两段代码。...特点: 1、完全兼容VBScript.RegExp 正则组件的各种属性与方法 2、支持与 Perl 兼容的正则表达式语法。...值:字符串 Multiline 多行模式。使 ^ 符号除了能够匹配字符串开始位置外,还能匹配换行符(\n)之后的位置;使 $ 符号除了能够匹配字符串结束位置外,还能匹配换行符之前的位置。...默认情况下, ^ 符号只能匹配字符串开始位置, $ 符号只能匹配字符串结束位置。SINGLELINE 和 MULTILINE 虽然听起来相互矛盾,但却是作用在不同的地方。因此它们是可以组合使用的。...Extended * 忽略表达式中的空白字符,并且把从 # 开始到该行行末的内容视为注释。默认情况下,正则表达式中的空格,换行等字符将可以匹配相应的字符。

    98020

    JavaScript 正则表达式全面总结

    :b)(c)/ 中 \1 将表示 (c) 所匹配的文本。 指定匹配位置(锚元素) 有一些正则表达式的元素不用来匹配实际的字符,而是匹配指定的位置。我们称这些元素为正则表达式的锚。...正则表达式中的锚字符包括: ^ 用来匹配字符串的开始,多行检索时匹配一行的开头。 $ 用来匹配字符串的结束,多行检索时匹配一行的结尾。...任意正则表达式都可以作为锚点条件。 先行断言 (?=pattern) 它表示一个位置,该位置之后的字符能匹配 pattern 。如 /\d+(?...$` 插入当前匹配的子串左边的内容。 $' 插入当前匹配的子串右边的内容。 $n 假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串。...在这种情况下,返回的项目将具有如下所述的其他属性(groups: 一个捕获组数组 或 undefined(如果没有定义命名捕获组)。index: 匹配的结果的开始位置。input: 搜索的字符串。)

    98240

    Golang(四)正则表达式使用

    匹配“字符类”外的一个字符,“字符类”见后面的说明 \小写Perl标记 匹配“Perl类”中的一个字符,“Perl类”见后面的说明 \大写Perl标记..." Go."] // 查找“单词边界”之间的字符串 reg = regexp.MustCompile(`(?...,并返回第一个匹配的位置 // 同时返回子表达式匹配的位置 // {完整项起始, 完整项结束, 子项起始, 子项结束, 子项起始, 子项结束, ...} func (re *Regexp) FindSubmatchIndex...替换 src 中的匹配项 // 如果 repl 的返回值中有“分组引用符”($1、$name),则将“分组引用符”当普通字符处理 // 全部替换,并返回替换后的结果 func (re *Regexp)...,替换 src 中的匹配项 // 如果 repl 的返回值中有“分组引用符”($1、$name),则将“分组引用符”当普通字符处理 // 全部替换,并返回替换后的结果 func (re *Regexp)

    3.4K30

    浅析JavaScript正则表达式

    JavaScript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能,JavaScript的正则表达式语法是Perl5的正则表达式语法的大型子集...1.直接量定义(perl风格,本人较习惯用直接量):var reg = /exp/attributes   var pattern = /ccy$/;//匹配以ccy结尾的字符串; 注:同一段代码所表示的正则表达式每次运行时直接量会转换成不同的...6.指定匹配位置 正则表达式中匹配位置是一个难点 锚字符与断言 字符 含义 ^ 匹配字符串的开头,在多行检索中匹配一行的开头 $ 匹配字符串的结尾,在多行检索中匹配一行的结尾 \b 匹配一个单词的边界...中设置了修饰符g,则返回的数组包含字符串中的所有匹配结果,若没有g,就不会进行全局检索,只会检索第一个匹配。...9.RegExp对象 RegExp第一个参数包含正则表达式的主体部分,也就是直接量中两条斜线之间的文本,不论是字符串直接量还是正则表达式都使用 \ 字符作为转义字符的前缀, 因此当给RegExp()传入一个字符串表述正则表达式时

    1.6K30
    领券