提取数字――字符串、正则面试题(精选8篇)由网友“七上八下”投稿提供,下面是小编整理过的提取数字――字符串、正则面试题,欢迎您阅读分享借鉴,希望对您有所帮助。
篇1:提取数字――字符串、正则面试题
提取数字――字符串、正则面试题
HTML5学堂:正则、数组、字符串,是JavaScript语言中让人头痛的一些知识,今天这篇文章我们使用数组字符串、正则两种方法,来实现从一个字符串中提取数字的功能,并将提出出来的数字作为一个数组返回。
提取字符串中的数组
将一个字符串中的数字提取出来,再有多个连续的数字组合为一个数组。例如:将hyoga3476H5course75,提取组合成:[3476, 5, 75]
题目剖析
字符串方法的解题思路:从字符串的第一位开始进行检测,查看是否是介于数字之间,如果是的话,则将组接字符串,当没有数字再出现的时候,将组接好的数字字符串,作为一个数组元素添加到数组当中。需要有一个地方进行处理,即如果最后一位是数字,这种情况下,需要进行再次检测。
相关知识点的使用:字符串方面,需要使用到charAt、push方法;正则方面,需要使用到match方法。
篇2:shell 字符串 查找 替换 正则 操作linux操作系统
# $
?o $
bcd
?o $
cd
?o $
abcd
?o $
ab
%pos=1
%len=2
?o $
bc
匹配正则表达式
代码:
# 打印匹配长度
%expr match $x “.”
1
%expr match $x “abc”
3
%expr match $x “bc”
0
字符串的掐头去尾
代码:
%x=aabbaarealwwvvww
?o “$”
aabbaarealwwvv
?o “$”
aabbaareal
?o “$”
lwwvvww
?o “$”
bbaarealwwvvww
其中 , # 表示掐头, 因为键盘上 # 在 $ 的左面。
其中 , % 表示%, 因为键盘上 % 在 $ 的右面。
单个的表示最小匹配,双个表示最大匹配。
也就是说,当匹配的有多种方案的时候,选择匹配的最大长度还是最小长度,
字符串的替换
代码:
%x=abcdabcd
?o $ # 只替换一个
bbcdabcd
?o $ # 替换所有
bbcdbbcd
不可以使用 regexp , 只能用 * ? 的文件扩展方式
三、性能比较
在shell中,通过awk,sed,expr等都可以实现,字符串上述操作。下面我们进行性能比较。
[chengmo@localhost ~]$test='c:/windows/boot.ini'
[chengmo@localhost ~]$ time for i in $(seq 10000);doa=${#test};done;
real 0m0.173s
user 0m0.139s
sys 0m0.004s
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=$(expr length$test);done;
real 0m9.734s
user 0m1.628s
象专业人员那样截断字符串
尽管 basename 和 dirname 是很好的工具,但有时可能需要执行更高级的字符串“截断”,而不只是标准的路径名操作。当需要更强的说服力时,可以利用 bash 内置的变量扩展功能。已经使用了类似于 ${MYVAR} 的标准类型的变量扩展。但是 bash 自身也可以执行一些便利的字符串截断。看一下这些例子:
第一种方法:
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
“*”只是一个通配符可以不要
$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg
在第一个例子中,输入了 ${MYVAR##*fo}。它的确切含义是什么?基本上,在 ${ } 中输入环境变量名称,两个 ##,然后是通配符 (“*fo”)。然后,bash 取得 MYVAR,找到从字符串 “foodforthought.jpg” 开始处开始、且匹配通配符 “*fo” 的 最长 子字符串,然后将其从字符串的开始处截去。刚开始理解时会有些困难,为了感受一下这个特殊的 “##” 选项如何工作,让我们一步步地看看 bash 如何完成这个扩展。首先,它从 “foodforthought.jpg” 的开始处搜索与 “*fo” 通配符匹配的子字符串。以下是检查到的子字符串:
f
fo MATCHES *fo
foo
food
foodf
foodfo MATCHES *fo
foodfor
foodfort
foodforth
foodfortho
foodforthou
foodforthoug
foodforthought
foodforthought.j
foodforthought.jp
foodforthought.jpg
在搜索了匹配的字符串之后,可以看到 bash 找到两个匹配。它选择最长的匹配,从初始字符串的开始处除去,然后返回结果。
上面所示的第二个变量扩展形式看起来与第一个相同,但是它只使用一个 “#” -- 并且 bash 执行 几乎同样的过程。它查看与第一个例子相同的子字符串系列,但是 bash 从初始字符串除去 最短 的匹配,然后返回结果。所以,一查到 “fo” 子字符串,它就从字符串中除去 “fo”,然后返回 “odforthought.jpg”。
这样说可能会令人十分困惑,下面以一简单方式记住这个功能。当搜索最长匹配时,使用 ##(因为 ## 比 # 长)。当搜索最短匹配时,使用 #。看,不难记吧!等一下,怎样记住应该使用 '#' 字符来从字符串开始部分除去?很简单!注意到了吗:在美国键盘上,shift-4 是 “$”,它是 bash 变量扩展字符。在键盘上,紧靠 “$” 左边的是 “#”。这样,可以看到:“#” 位于 “$” 的“开始处”,因此(根据我们的记忆法),“#” 从字符串的开始处除去字符。您可能要问:如何从字符串末尾除去字符。如果猜到我们使用美国键盘上紧靠 “$” 右边 的字符 (“%),那就猜对了。这里有一些简单的例子,解释如何截去字符串的末尾部分:
$ MYFOO=”chickensoup.tar.gz“
$ echo ${MYFOO%%.*}
chickensoup
$ echo ${MYFOO%.*}
chickensoup.tar
正如您所见,除了将匹配通配符从字符串末尾除去之外,% 和 %% 变量扩展选项与 # 和 ## 的工作方式相同。请注意:如果要从末尾除去特定子字符串,不必使用 ”*“ 字符:
MYFOOD=”chickensoup“
$ echo ${MYFOOD%%soup}
chicken
在此例中,使用 ”%%“ 或 ”%“ 并不重要,因为只能有一个匹配。还要记住:如果忘记了应该使用 ”#“ 还是 ”%“,则看一下键盘上的 3、4 和 5 键,然后猜出来。
第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。
可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga
这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。
应用字符串截断
现在我们已经学习了所有截断字符串的知识,下面写一个简单短小的 shell 脚本。我们的脚本将接受一个文件作为自变量,然后打印:该文件是否是一个 tar 文件。要确定它是否是 tar 文件,将在文件末尾查找模式 ”.tar“。如下所示:
mytar.sh -- 一个简单的脚本
#!/bin/bash
if [ ”${1##*.}“ = ”tar“ ]
then
echo This appears to be a tarball.
else
echo At first glance, this does not appear to be a tarball.
fi
要运行此脚本,将它输入到文件 mytar.sh 中,然后输入 ”chmod 755 mytar.sh“,生成可执行文件。然后,如下做一下 tar 文件试验:
$ ./mytar.sh thisfile.tar
This appears to be a tarball.
$ ./mytar.sh thatfile.gz
At first glance, this does not appear to be a tarball.
好,成功运行,但是不太实用。在使它更实用之前,先看一下上面使用的 ”if“ 语句。语句中使用了一个布尔表达式。在 bash 中,”=“ 比较运算符检查字符串是否相等。在 bash 中,所有布尔表达式都用方括号括起。但是布尔表达式实际上测试什么?让我们看一下左边。根据前面所学的字符串截断知识,”${1##*.}“ 将从环境变量 ”1“ 包含的字符串开始部分除去最长的 ”*.“ 匹配,并返回结果。这将返回文件中最后一个 ”.“ 之后的所有部分。显然,如果文件以 ”.tar“ 结束,结果将是 ”tar“,条件也为真。
您可能会想:开始处的 ”1“ 环境变量是什么。很简单 -- $1 是传给脚本的第一个命令行自变量,$2 是第二个,以此类推。
篇3:基于动态流通语料库的有效字符串提取研究
基于动态流通语料库的有效字符串提取研究
本文提出了一个新的语言处理单位”有效字符串(Valid String,VSt)“,并以”动态流通语料库(DCC)“为依托,以”流通度“理论为支点,对”有效字符串(VSt)“的'提取进行了初步研究.论文定义的”有效字符串(VSt)“是一种语言理解单位,而不是单纯的语法单位.
作 者:隋岩 作者单位:北京语言大学 刊 名:语言文字应用 PKU CSSCI英文刊名:APPLIED LINGUISTICS 年,卷(期): ”“(2) 分类号:H0 关键词:篇4:Java判断一个字符串为数字(正负、小数)
Java判断一个字符串为数字(正负、小数)
这些天因为工作上的需求,其中一个小环节是传来一个String类型的参数,需要判断该参数是否为数字(正负、正数小数都要能判断)。
当走到这个环节时,首先想到的是isDigit方法,具体不清楚是哪个类下的了,不过查API后发现该方法不可行,它只能判断正整数。不过为了以后可能会用到该方法,所以特意写了个小程序当备用。
代码如下:
//采用Character.isDigit()方法来判断一个字符串是否为数字 //局限性很大,只能判断全是数字的`字符串 char[] strArr = str.toCharArray(); int count = 0; for(int i = 0; i < strArr.length; i++) { if(Character.isDigit(strArr[i]) == false) { count++; } } if(count > 0) { System.out.println(”Is not Number!“); } else { System.out.println(”Is Number!“ + str); }
后来通过百度,又找到了另外两种方法,一种是通过强制类型转换的方式,一种就是正则表达式了。
对于强制类型转换的方式,代码可以这样写:
//采用强制类转换来判断一个字符串是否为数字//有局限性,如果要判断是int型或double型,就必须要调整转换语句,但可以判断正负try { //Integer num = Integer.valueOf(str); Double num2 = Double.valueOf(str); //System.out.println(”Is Number!“ + num); System.out.println(”Is Number!“ + num2);} catch (Exception e) { System.out.println(”Is not Number!“);}
最后能解决我问题的,还是通过正则表达式的方式了。
代码如下:
//采用正则表达式的方式来判断一个字符串是否为数字,这种方式判断面比较全 //可以判断正负、整数小数 Boolean strResult = str.matches(”-?[0-9]+.*[0-9]*“); if(strResult == true) { System.out.println(”Is Number!“); } else { System.out.println(”Is not Number!“); }
通过这次的问题,我也发现了自身的不足。正则表达式确实很牛,但是我对它的认识,还停留在了解阶段。所以后续工作中,一定要有意识的多去学习它,使用它。
篇5:python正则表达式去掉数字中的逗号(python正则匹配逗号)
最近更 新
python 提取文件的小程序
Python开发实例分享bt种子爬虫程序和种子
Python 自动安装 Rising 杀毒软件
Python查询Mysql时返回字典结构的代码
python正则表达式re模块详解
Python中的文件和目录操作实现代码
wxpython 学习笔记 第一天
Python Mysql数据库操作 Perl操作Mysql数
python中使用sys模板和logging模块获取行
Python生成随机数的方法
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
篇6:生成注册码前的近乎唯一的数字字符串的方法
Function Key1(Str)’str--注册内容
Dim I,A ’A--生成注册码之前的数字字符串
For I = 1 To Len(Str) ’
A = A & Abs(Asc(Mid(Str,I,1)))
Next
’上面的循环是将注册内容中的所有内容转换成ANSI字符串
Do
If Len(A) > 12 Then
A = Key2(A) ’调用函数key2来缩短生成注册码之前的长度
Else
Exit Do
End If
Loop
A = Key2(A) ’再来一次,好让所有的数字都用上一遍
’通过上面的循环把字符串限定在一定的数量
Key1 = Key3(A) ’调用其他函数将数字转换成自己独有的注册码
End Function
Function Key2(Num)
Dim A,B,C
A = Mid(Num,1,6)’取字符串1-6个数字
B = Mid(Num,7,6)’取字符串6-12个数字
C = Mid(Num,13)’取字符串12以后的数字,跟函数key1种的相对应
Key2 = A 9 & B 7 & C ’缩短字符串,数字,自己随便选择一个1-9的就可以了
End Function
将数字转换成特定字符的方法有很多种,由于我自己的东西采用了我自己写的,所以,这个方法就不公布了,
生成注册码前的近乎唯一的数字字符串的方法
,
方法很简单,给大家做个参考。
小窍门:
如果最后返回的字符串太短,我们可以通过mid何len这2个内置函数在转换的时候将最后的注册码固定成特有的长度,比如长度为1,那么len(mid(str,3,3))则返回0,这样就得到固定长度的内容了
或者用下面的函数也可以
QUOTE:
function aaa(str)
if len(str) < 12 then
for i = 1 to 12-len(str)
aaa = ”0“ & aaa ’或者 aaa = aaa & ”0“ ,这个0可以换成0-9的任意数字
next
end if
end if
或者干脆自己随便定一个长度合适的字符串填充上去
篇7:python清除字符串里非数字字符的方法
,
分享给大家供大家参考。具体如下:
import re s = ”how19 a*re 254y**ou?“ # Using regular expressions print re.sub(”D“, ”", s)
希望本文所述对大家的Python程序设计有所帮助。
篇8:基于轮廓形状分析的地形图数字注记提取
基于轮廓形状分析的地形图数字注记提取
针对地形图中图线与注记字符分离的`问题,本文提出了基于轮廓的形状分析来提取组成地形图注记基元的方法,克服了字线粘连造成的分离困难,提高了所提取注记信息的完整性。提取的结果为地形图中注记的进一步识别提供了依据。
作 者:郭丙轩 李德仁 雷震 GUO Bingxuan LI Deren LEI Zhen 作者单位:武汉大学 刊 名:武汉大学学报(信息科学版) ISTIC EI PKU英文刊名:GEOMATICS AND INFORMATION SCIENCE OF WUHAN UNIVERSITY 年,卷(期):2001 26(3) 分类号:P283.7 TP753 关键词:地图识别 复杂度 图文分离 轮廓形状 字符提取★ 文案试题考试
★ 百度笔试题
【提取数字――字符串、正则面试题(精选8篇)】相关文章:
广州会计电算化基础知识考试试卷2023-02-04
计算机二级MSoffice高级应用模拟题及答案2023-09-22
百度校招移动研发笔试题2023-03-28
腾讯实习生笔试经验谈2022-08-07
一份比较全的PHP笔试题2024-02-25
一级计算机基础选择题练习及答案2023-09-13
会计试题及答案2022-05-22
会计电算化考试试题2023-11-09
财务招聘笔试题2022-06-30
会计电算化考试题型2023-12-09