提取数字――字符串、正则面试题

时间:2022-08-17 08:01:54 试题试卷 收藏本文 下载本文

提取数字――字符串、正则面试题(精选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 关键词:地图识别   复杂度   图文分离   轮廓形状   字符提取  

计算机二级考试题型

阿里巴巴实习生的总结

散文的基础知识技术

计算机二级考试流程

信息负熵在图书馆系统管理的影响作用论文

高考语文散文阅读解题常见题型

会计从业资格考试试题答案

广东会计从业资格《会计基础》模拟试题

文案试题考试

百度笔试题

提取数字――字符串、正则面试题
《提取数字――字符串、正则面试题.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【提取数字――字符串、正则面试题(精选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