利用perl编写个正则表达式,可以将January 26, 2005这类形式的时间识别,并且以2005-01-26的形式输出,

作者&投稿:巫勇 (若有异议请与网页底部的电邮联系)
求java编写的各类中文时间识别的正则表达式~

各式各样的正则表达式参考大全(访问正则表达式实例库):
^\d+$  //匹配非负整数(正整数 + 0)  
//匹配整数 ^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 0)
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数
^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数 + 0)
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数
^(-?\d+)(\.\d+)?$  //匹配浮点数
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匹配email地址
^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匹配url
匹配中文字符的正则表达式: [一-龥]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:
[\s| ]*
匹配HTML标记的正则表达式:/.*|/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$


下表是元字符及其在正则表达式上下文中的行为的一个完整列表,具体到每个正则表达式符号:
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’
’ 或 ’’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’
’ 或 ’’ 之前的位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。
{n} n 是一个非负整数,匹配确定的n 次。
{n,} n 是一个非负整数,至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
. 匹配除 "
" 之外的任何单个字符。要匹配包括 ’
’ 在内的任何字符,请使用象 ’[.
]’ 的模式。
(pattern) 匹配pattern 并获取这一匹配。 (?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。 (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。 (?!pattern) 负向预查,与(?=pattern)作用相反 x|y 匹配 x 或 y。
[xyz] 字符集合。
[^xyz] 负值字符集合。
[a-z] 字符范围,匹配指定范围内的任意字符。
[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。
\B 匹配非单词边界。
\cx 匹配由x指明的控制字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。

匹配一个换行符。等价于 \x0a 和 \cJ。
匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f
\v]。
\S 匹配任何非空白字符。等价于 [^ \f
\v]。
匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。

um 匹配 num,其中num是一个正整数。对所获取的匹配的引用。

标识一个八进制转义值或一个后向引用。如果
之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

m 标识一个八进制转义值或一个后向引用。如果
m 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果
m 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则
m 将匹配八进制转义值 nm。
ml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八.

楼上的是找出其中之一呀,楼主要的是同时包含两个句子。
可以这样
perl -n -e 'print if ($_ =~/Barney/ && $_ =~ /Fred/)' test.txt >new.txt

其实这样的实现用awk命令这些很好用。楼主可以学习学习awk sed grep 等命令。
我补充个实例吧。
awk '{if (/Barney/ && /Fred/) print }' test.txt > new.txt
more test.txt | grep Barney | grep Fred >new.txt (这个管道用着很有意思)
都测试了一下,可行

不知道你是否要求把January的大小忽略,我给你写了段代码,可以转化忽略大小写即January,或JAUNUARY或january这种的:
请你再自己根据需要修改或调用这段代码,或者把他写成一个函数。
#!/usr/bin/perl -w

use warnings;
use strict;
my %month=("january","01","february","02","march","03",
"april","04","may","05","june","06",
"july","07","august","08","september","09",
"october","10","november","11","december","12",);
my $date="January 26, 2005";
my $date_new="";

if($date=~m/([a-z]+) (\d{1,2}), (\d{4})/i)
{
my $m=$1;
$m=~tr/A-Z/a-z/;
$date_new="$3-$month{$m}-$2" if (exists($month{$m}));
}
print $date_new;


perl中grep的对象可以为变量吗 正确方法是怎样?我的详细问题与脚本是这...
问题应该是出在while (<A>) 这里。这句是把文件中每一行取出来,赋给系统变量$_,而$_这个变量是很特殊的,perl中好多的功能都会用到这个,所以可能会带来不可知的后果,我们应该尽量避免使用$_。另外,<B>这个不能多次使用,除非你使用seek重置文件指针,不然的话,第一次执行完了,第二次里面...

Perl语言现在还流行使用吗
perl还是比较流行的,一款非常强大的脚本语言,但是由于其灵活性太强,所以开发者写代码会写得很爽,如果风格不同的维护人员要看懂别人的代码还是比较费力的。而且perl的学习资源并不多,所以如果你真心想学一门脚本语言,建议你学python最近红得发紫,另外ruby也很不错,这两个我觉得ruby更优雅但是是日货...

在Perl中有个if语句为if (-e "$dir\/$_),其中$dir是某个目录,$_已取得$...
-W文件或目录对真正用户可写 -X文件或目录对真正用户执行 -O文件或目录归真正用户所有 -e文件或目录存在 -z文件存在且大小为0 -s文件或目录存在且不为0(返回字节数)-f文件为普通文件 -d文件为目录 -l文件为符号链接 -p文件为命名管道(FIFO)-S文件为一个套口(socket)-b文件为块特殊文件 -c...

perl.exe是什么进程 perl.exe禁用删除方法
如上所示,在windows cmd下执行一个per指令,对应的,右侧的windows任务管理器中就会增加一个perl.exe*32。如果您安装了一些需要使用到perl的软件(通常是跨平台的,多为从linux\/unix平台移植过来的软件,如oracle数据库等),那么它们可能会安装并运行perl.exe来执行perl任务。如果您用不到这些软件,可以...

crontab perl 定时发送邮件
情况应该是在 domain ( 域 ) 或 user 的权限问题.一种推理, 假设用 perl 执行时没有问题, 那可能是因为你正在以自己 user id 的身份来执行, mail server 允许 relay. 又或者因为你的 id 所属的 group \/ domain 是 mail server 所 "信任的" 范围, 所以能直接执行. 但交到 crontab 时, 就...

用初学者的做法。做。。我是个初学者。。求C++的高手帮帮我
其他对黑客而言比较重要的语言包括Perl和LISP。 Perl很实用,值得一学;它被广泛用于活动网页和系统管理,因此即便你从不用Perl写程序,至少也应该能读懂它。 LISP 值得学习是因为当你最终掌握了它你会得到丰富的经验;这些经验使你在以后的日子里成为一个更好的程序员,即使你实际上可能很少使用LISP本身。 当然,实际上...

Perl 6 的正式版什么时候出来? 参与了这个项目的大牛回答一下
Perl 6 貌似快发布正式版了:Perl 6 是对perl 5的重大改进, 这个计划从2000年就开始了, 但直到现在还没有释放正式版,主要是因为perl没有大公司的支持,完全靠志愿者组成的社区进行开发, 进展缓慢,perl6解释器一直没有实现,但最近好像有了较快的发展,Rakudo (Perl6解释器的一种实现)实现了大...

中国那种编程语言最受公司欢迎
目前比较流行的编程语言:1、Ruby Ruby于1993年2月24日开始编写至1995年12月才正式公开发布,一种为简单快捷面向对象编程而创的脚本语言,Ruby是一个语法像Smalltalk一样完全面向对象、脚本执行、又有Perl强大的文字处理功能的编程语言。2、Perl Perl ,一般被称为“实用报表提取语言”(Practical Extraction...

哪位发明了Perl编程语言
在这些年中,他在Unisys、JPL、NetLabs和Seagate工作过,做的事情从离散事件模拟器到网络管理系统,偶尔还搞过宇宙飞船。正是在Unisys工作的期间,在他试图把一个跨东西海岸的配置管理系统用一个1200波特的加密链路、和一个经过修改的Netnews粘合起来时,Perl诞生了。Larry目前为O'Reilly公司工作。

脚本有哪些?
常见的脚本语言:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,PHP,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。 [编辑本段]与... 脚本文件是什么意思 脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。各类...

巨鹿县15789363055: 利用perl编写个正则表达式,可以将January 26, 2005这类形式的时间识别,并且以2005 - 01 - 26的形式输出, -
沈夜妇科: 不知道你是否要求把January的大小忽略,我给你写了段代码,可以转化忽略大小写即January,或JAUNUARY或january这种的:请你再自己根据需要修改或调用这段代码,或者把他写成一个函数.#!/usr/bin/perl -wuse warnings;use strict;my %...

巨鹿县15789363055: 如何利用perl命令行, 来执行正则表达式,寻找匹配的行? -
沈夜妇科: 楼上的是找出其中之一呀,楼主要的是同时包含两个句子.可以这样 perl -n -e 'print if ($_ =~/Barney/ && $_ =~ /Fred/)' test.txt >new.txt 其实这样的实现用awk命令这些很好用.楼主可以学习学习awk sed grep 等命令. 我补充个实例吧.awk '{if (/Barney/ && /Fred/) print }' test.txt > new.txt more test.txt | grep Barney | grep Fred >new.txt (这个管道用着很有意思) 都测试了一下,可行

巨鹿县15789363055: perl 正则表达式 -
沈夜妇科: 举个例子:my $a="helloworld,you"; print "$&\n$`\n" if $a=~s/world/home/i; 输出:world hello 注:$&是存储匹配项,即world;$`是存储匹配项前面的内容,即hello 还有个$'是存储匹配项后面的内容,即,you

巨鹿县15789363055: perl正则表达式 -
沈夜妇科: $x = 'PTH without pad : Consider Thickness : 1600 Resolution : 25.4 Micron Total copper : 57736.729 sq/mm Percentage : 70'; print ( $x =~ /Percentage\s+:\s+(\d+)/ ) ; # 直接输出# 留下变量$num = $1 ; print "percentage = $num%";

巨鹿县15789363055: perl语言编程运用正则表达式找出一段英文中以c开头的单词并统计词频,输出,排序? -
沈夜妇科: my $str = "abcd abef ccAA ddmm cMcc ccAA cMcc cMcc cfff ceme"; my %count; while ($str =~/\b(c\w+)/g) { $count{$1}++; } my @n = sort{$count{$a} <=> $count{$b}}keys(%count); for (@n) { print "$_ $count{$_}\n"; }

巨鹿县15789363055: 求perl正则表达式 -
沈夜妇科: 只要是perl的正则就行是吧? 试试/\b([^\/]+?)\b/g #/user/bin/perl$_ = 'abc/qwe/rty/yui/ppoo';my @b = /\b([^\/]+?)\b/g;print join ' ', @b;

巨鹿县15789363055: perl 代码中 变量 匹配变量的正则表达式的写法 -
沈夜妇科: 很怀疑你是打错字母了 $pattern = 'abcd'; $line = 'abcdefg';if($line=~m/$pattern/){print $line;}

巨鹿县15789363055: Perl中正则表达式去掉第一个空格后的所有字符 -
沈夜妇科: var reg = /^([^\s]*)\s.*/; var str = "aaa ccc 111 222 333"; str.replace(reg,"$1");

巨鹿县15789363055: perl 里正则表达式取值 -
沈夜妇科: my $aim = (split /\// , $string)[-1];

巨鹿县15789363055: perl语言中正则表达式替换 -
沈夜妇科: my $string = "hello \n world";$string=~s/\n/ /g; print $string;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网