使用正则表达式获取ISBN号

时间:2016-12-18 12:32:59

标签: regex

ISBN编号带有随机短划线位置

978-618-81543-7-7
9786-18-81-5437-7
97-86-18-81-5437-7

我怎么能在不知道冲刺位置的情况下每次都能得到它们?

2 个答案:

答案 0 :(得分:3)

只需使用您选择的语言删除每个-

使用Ruby:

"978-618-81543-7-7".delete('-')
#=> "9786188154377"

如果你真的想使用正则表达式:

"978-618-81543-7-7".gsub(/-/,'')

如果你有多行isbns:

isbns = "978-618-81543-7-7
9786-18-81-5437-7
97-86-18-81-5437-7"

p isbns.scan(/\b[-\d]+\b/).map{|number_and_dash| number_and_dash.delete('-')}
#=> ["9786188154377", "9786188154377", "9786188154377"]

答案 1 :(得分:1)

很容易使用正则表达式,谷歌它可以了解更多。在Python中:

import re
nums=re.findall('\d+',isbnstring)

这将给出一个数字列表。要将它们连接到字符串:

isbn=''.join(nums)

根据下面的评论,如果你正在处理一个文件,你可以逐行工作:

with open(isbnfile) as desc:
    for isbnstring in desc:
        #Do the above and more.

作为一个例子。有很多方法可以做到这一点。我刚从命令行sed意识到这也是一个不错的选择:

sed 's/-//g' isbnfile > newisbnfile