正则表达式删除浮点值

时间:2014-07-31 18:08:58

标签: python regex

我希望能够使用正则表达式从文本字符串中删除带小数位的数字。见这里

import re
obj = '''This is my #1 user1234@gmail.com <body/> 2 3 4 5 2345! 23542 312453 76666374 56s34534 
        1. _12345_blah@gmail.com 
        1978-12-01 12:00:00 1.23 21.243
        <script>function stripScripts(s) {
            var div = document.createElement('div');
            div.innerHTML = s;
            var scripts = div.getElementsByTagName('script');
            var i = scripts.length;
            while (i--) {
              scripts[i].parentNode.removeChild(scripts[i]);
            }
            return div.innerHTML;
          }</script> 99.258 245.643.3456!'''
regex1 = re.compile('(?is)(<script[^>]*>)(.*?)(</script>)|(<.*?>)|(?<!\S)\d+(?!\S)')
out1 = re.sub(regex1, ' ', obj)
print out1

data = ' '.join(out1.split()).strip()
print data 

这个正则表达式删除了我需要的大部分内容,但是留下了1.23,21.243和99.258。我想附加当前的正则表达式来删除这些值......

regex = (?is)(<script[^>]*>)(.*?)(</script>)|(<.*?>)|(?<!\S)\d+(?!\S)

2 个答案:

答案 0 :(得分:1)

re.sub("\d*\.\d+","",the_text)

不会工作?或者

re.sub("(\d*\.\d+)|(\d+\.[0-9 ]+)","",the_text)

答案 1 :(得分:0)

谢谢@Joran Beasley!我试过这个并且有效。

(?is)(<script[^>]*>)(.*?)(</script>)|(<.*?>)|(?<!\S)\d+(?!\S)|([0-9]+\.[0-9]+ )

在这里添加第一个“d”有什么好处?

(\d+\.[0-9 ]+)