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

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

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

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

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

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

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

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

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

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

相关·内容

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

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

50770

YAML基础语法

应用场景: ansible清单也支持YAML语法,可以使用YAML语法编写清单从而管理受管主机; docker-composeDockerFile文件内容中使用它; 如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.5K00

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: !!

54420

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:

57310

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

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

81740

JavaScript(RegExp正则匹配)

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

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

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

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

1.1K50

玩转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.2K00

玩转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 * 忽略表达式中空白字符,并且把从 # 开始到该行行末内容视为注释。默认情况下,正则表达式中空格,换行等字符将可以匹配相应字符。

92220

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.2K30

浅析JavaScript正则表达式

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

1.5K30

JavaScript 正则表达式全面总结

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

86240
领券