perl5中锚位修饰符\A \z \Z 和perl4中^(开头)和$(结尾)的区别

习惯使用perl4的开发者总是用^表示字符串开头锚位,用$表示字符串结尾锚位,比如\^https://\ 将会匹配所有以https://开头的字符串,同样,\.bmp$\将会匹配所有以.bmp结尾的字符串。但是到了perl5,有了\A ,\Z , \z三种锚位,这三种锚位中,\A与^相同,表示匹配以某模式开头的字符串,而\z就与$相同了……

但是如果有了/m,则^表示行首而不再是字符串的串首!以字符串"this is a wilma line \nbarney is on another line \n but this ends in fred\n and a final dino line"为例,串首只有一个,就是this ,而行首却有四个,分别是this,barney,but和and,因此,模式/^barney/不能匹配该字符串,因为barney不是串首元素;但是,/^barney/m可以匹配该字符串,因为加了/m以后,^就表示匹配行首了,条件更宽松了……同样的,/fred$/不能匹配该字符串,因为fred不在串尾位置。但是/fred$/m却可以匹配该字符串,因为加了/m就表示匹配行尾而不是串尾了,故可以匹配了……

时间: 2024-10-11 17:02:01

perl5中锚位修饰符\A \z \Z 和perl4中^(开头)和$(结尾)的区别的相关文章

【转载】Java中各种修饰符与访问修饰符的说明

转:http://handbook.blog.163.com/blog/static/837295522010889212296/ 类: 访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被所有类访问(使用) public类必须定义在和类名相同的同名文件中 package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和publi

C#中访问修饰符

范围(从小到大):private<internal/protected<protected internal<public private:只能在本类中使用internal:只能在本程序集(本项目)中使用protected:只能在具有继承关系的子类中使用(可以在不同的项目中)protected internal:在本程序集中或在不同的程序集中但是具有继承关系就可以使用public:都能使用 注意:1.如果类没有使用显示的修饰符,默认为internal,类的访问修饰符只能是public和i

java学习笔记(三)java中的修饰符abstract、static与final

一.四种访问级别的访问范围 访问级别 访问修饰符 同类 同包 子类 不同的包 公开 public 受保护 protected 默认 没有访问修饰符 私有的 private 二.使用abstract修饰符需要遵守的语法规则 1.抽象类中可以没有抽象方法,但是包含抽象方法的类必须定义为抽象类,即用abstract修饰: 2.抽象类跟抽象方法不能被final修饰符修饰: 3.抽象类中可以有非抽象方法,因为继承抽象类的子类必须重写父类中所有的抽象方法,因此抽象类中不能有抽象构造方法和抽象静态方法: 4.

java中Volatile修饰符的含义

在java语言中:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值进行对比. volatile关键字的作用就是提示vm:对于这个成员变量不能保存它的私有拷贝,而应直接与共享变量进行交互. 被volatile修饰符修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值.而且,当成员变量发生变化时,又强迫线程将变化了的值写回共享内存,这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值.这样当多个线程同时与某个

Java中的修饰符

在java中,修饰符分为访问权限修饰符和非访问权限修饰符.可以被修饰符修饰的java语言元素有类,变量,方法和接口.下面分别描述在这四个元素上使用修饰符的作用. 类 java中声明类的格式为: 访问修饰符 修饰符 class 类名 extends 父类名称 implements 接口名称{} 其中访问修饰符和修饰符可以互换位置,可以应用于类的访问修饰符为public和package,public表明类可以被任何类使用.package表示包访问权限,它是默认的访问权限,可以省略这个修饰符,使用pa

【转】C# 中访问修饰符

用通过代码:  类内部 using System;class Mod{    void defaultMethod()    {        Console.WriteLine("this is a default method");    }    public void publicMethod()    {        Console.WriteLine("this is a public method");    }    private void pr

Java面向对象编程之Java语言中的修饰符

近日,读了孙卫琴老师的<Java面向对象编程>一书,心中颇有些感悟,想着将其记录下来. Java中的修饰符 在Java语言中,有这样一些单词(说得再准确点儿,应该是形容词):abstract(抽象的).static(静态的).public(公共的).protected(受保护的).private(私有的).synchronized(同步的).native(本地的).transient(暂时的).volatile(易失的)和final(不可改变的),它们被成为修饰符,这些修饰符可以修饰类.变量和

Java中final修饰符深入研究

一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很多Java程序员来说,他们大都只是草草看了一下各种书本上的介绍,然后背下来,什么时候想起 来有这东西就用一下.对于何时使用final修饰符.使用final修饰符对程序有什么影响,这些其实他们并不知道,当然在这篇文章之前,我也是一知半解的. 我们书本上对final的描述大概有三种用法: final可以修饰变量,

Java中访问修饰符public、private、protecte、default

Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅可以跨类访问,而且允许跨包(package)访问.private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以 及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问.protect: 介于public 和 private 之间的一种访问修饰符,一