- 论坛徽章:
- 145
|
回复 1# blueskysee
1. awk code
$ str="123&&sdfsfdsdfsf;123s9d9fsdf12315677a1"
$ echo $str | awk -f get_longer.awk
number: 12315677
string: sdfsfdsdfsf
$ cat get_longer.awk
- function get_longer(str, pattern, t,a,n,len,ret){
- sub("\\[","[^",pattern);
- t = split(str, a, pattern);
-
- len = 0;
- ret = "";
- for(n=1; n<=t; ++n){
- if(len < length(a[n])){
- len = length(a[n]);
- ret = a[n];
- }
- }
- return ret;
- }
- {
- print "number:", get_longer($0, "[0-9]+");
- print "string:", get_longer($0, "[a-zA-Z]+");
- }
复制代码
#---------------------------------------------------------------------
2. Perl code
$ perl get_longer.pl
number: 12315677
string: sdfsfdsdfsf
$ cat get_longer.pl
- use strict;
- use warnings;
- sub get_longer{
- my($sStr, $sPattern) = @_;
- my $sRet = "";
- my $sLen = 0;
- while($sStr =~ m/($sPattern)/g){
- if($sLen < length($1)){
- $sLen = length($1);
- $sRet = $1;
- }
- }
- return $sRet;
- }
- my $sStr = "123&&sdfsfdsdfsf;123s9d9fsdf12315677a1";
- print "number: ", get_longer($sStr, '\d+'), "\n";
- print "string: ", get_longer($sStr, '[a-zA-Z]+'), "\n";
复制代码
#---------------------------------------------------------------------
3. Python code
$ python get_longer.py
number: 12315677
string: sdfsfdsdfsf
$ cat get_longer.py
- import os,sys,re
- def get_longer(sStr, pattern):
- rPtn = re.compile("(" + pattern + ")")
- sRet = ""
- sLen = 0
- for s in rPtn.findall(sStr):
- if(sLen <len(s)):
- sLen = len(s)
- sRet = s
- #;
- #;
- return sRet
- #;
- sStr="123&&sdfsfdsdfsf;123s9d9fsdf12315677a1"
- print "number:", get_longer(sStr, "\d+")
- print "string:", get_longer(sStr, "[a-zA-Z]+")
复制代码
|
|