Perl中正则\p属性

news/2024/7/16 5:09:45

今天研究一个Perl脚本,有几个正则非常不解:

    $text =~ s/([?!]) +([\'\"\(\[\¿\p{IsPi}]*[\p{IsUpper}])/$1\n$2/g;

    #multi-dots followed by sentence starters
    $text =~ s/(\.[\.]+) +([\'\"\(\[\¿\p{IsPi}]*[\p{IsUpper}])/$1\n$2/g;

    # add breaks for sentences that end with some sort of punctuation inside a quote or parenthetical and are followed by a possible sentence starter punctuation and upper case
    $text =~ s/([?!\.][\ ]*[\'\"\)\]\p{IsPf}]+) +([\'\"\(\[\¿\p{IsPi}]*[\ ]*[\p{IsUpper}])/$1\n$2/g;

    # add breaks for sentences that end with some sort of punctuation are followed by a sentence starter punctuation and upper case
    $text =~ s/([?!\.]) +([\'\"\(\[\¿\p{IsPi}]+[\ ]*[\p{IsUpper}])/$1\n$2/g;

其中\p后面的字符代表了一个unicode属性。也就是在perl里每个unicode编码都有一个独特的属性,我们可以根据它们各自的unicode属性找到匹配的字符。
关于unicode属性的介绍如下:
http://shouce.jb51.net/perl/PatternMatching.html
http://blog.csdn.net/wushuai1346/article/details/7206749
http://perldoc.perl.org/perluniprops.html


http://www.niftyadmin.cn/n/2953811.html

相关文章

关于Update语句的调整(2)

(2)1. 通常的调整方法-- 通常来说都先把update语句中的where子句提取出来进行调整。A.调整前的执行过程: SQL> select *from pa2 where exists (select 13 from p,c4 where p.idpa.id and p.cidc.cid5 )6 and not exists (select 17 fr…

罗伯特的现金流游戏

转自: http://hi.baidu.com/%BE%A8%D3%E3%D5%DC%D1%A7/blog/item/b0e3034b11cbac2a08f7ef58.html 《现金流游戏》中就重要的一点其实就是这张损益表。表中分成四个重要的部分——收入、支出、资产和负债。今天要想实现你的梦想,彻底掌握你的人生&#x…

吃枸杞上火4/11

昨天上午開始用枸杞泡水喝 每次用10顆,跑了3次,喝水時把枸杞也吃了 下午時開始感覺耳朵有陣痛 晚上嗓子開始有點痛 於是就喝了一罐王老吉,後來用一只雪梨煮水喝 今早又喝了一瓶金銀花露 感覺似乎好些了 盼望這火快點消下去 P.S:baidu一下枸杞是補藥,每天吃10-15顆為宜,看來我吃…

fedora16下安装mysql的问题

目前在fedora16下,yum安装mysql的最新版本是5.5.28,不幸的是在systemctl start mysqld.service阶段会报错。这是一个bug,不过还好有两个解决方法: 1. yum update systemd,然后重新安装即可。 2. 先修改/lib/systemd…

关于Update语句的调整(3)

关于Update语句的调整(3)我们来比较一下调整前后update语句的执行效率如何:调整前:SQL> update pa2 set pa.col13 (select pa.col1*c.col14 from p, c5 where p.idpa.id and p.cidc.cid6 )7 where exists (select 18 from p,c9 where p.idpa.…

fgets要注意的问题

假如我要按行读取一个文本文件,并且想动态分配缓冲区的大小,实例代码如下 #include "stdafx.h" #include "regex" using namespace std; int _tmain(int argc, _TCHAR* argv[]) {FILE* fp NULL;fopen_s(&fp,"test.txt&qu…

myeclipse快捷键大全【转】

编辑作用域功能快捷键文本编辑器查找上一个CtrlShiftK文本编辑器查找下一个CtrlK全局恢复上一个选择AltShift↓全局快速修正Ctrl11全局内容辅助Alt/全局上下文信息Alt?AltShift?CtrlShiftSpaceJava编辑器显示工具提示描述F2Java编辑器选择封装元素AltShift↑Java编…

java bigdecimal取值_Java中BigDecimal类的使用详解

不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。BigDecimal所创建的是对象,我们不能使用传统的、-、*、/等…