我目前使用这个表达式:独立数字正则表达式?
(\d+)
,我可以得到问题2串:
“2112343和4.99很多”
OR
“4.99 and alot of 2112343”
我得到这个来自:
[2112343, 4, 99]
我需要只得到 ... 我怎么能做到这一点?
我目前使用这个表达式:独立数字正则表达式?
(\d+)
,我可以得到问题2串:
“2112343和4.99很多”
OR
“4.99 and alot of 2112343”
我得到这个来自:
[2112343, 4, 99]
我需要只得到 ... 我怎么能做到这一点?
试试这个
(?<!\S)\d+(?!\S)
这只会匹配整数
如果我理解你是对的,你希望将这些数字与内部的一个点相匹配,但是不希望在结果集合中包含这些数字。
我将通过2步接近这一点,首先选择所有的数字,还有那些以点:
(\d+(?:\.\d+)*)
然后过滤掉一切,是不是纯粹的数字,并使用你的第一个正则表达式,并将其应用到每个从第一步的结果集合的项目:
(\d+)
我同意这种方法;试图想出一个过于复杂的正则表达式没有意义......但是我会使用'[\ d。] +'作为初始选择器。 – 2012-06-30 19:34:50
@pst:问题是如果我们想要对待“123”。如通缉或不通过。您的选择器会匹配它,并在第二步中将其扔掉。我的选择器会匹配“123”并最终保留它。运营商应该在这里决定最适合什么问题...... –
>>>r = re.match("\d+", "23423 in 3.4")
>>>r.group(0)
'23423'
这种解决方案只适用于这种特定情况。我怀疑OP想要一种只适用于这种格式的字符串的解决方案。 –
我不认为多数民众赞成在想什么。这只是他例子中的第一个数字...... –
正如我在发表我的评论:
(?:^|)(\d+)(?:$|)
它将匹配的已完全由数字所有“字”(一个字是由空格字符包围的非空格字符的字符串和或字符串的开始/结束。)
尝试此
(?<![0-9.])\d+(?![0-9.])
它usees图案
(?<!prefix)position(?!suffix)
其中(?<!prefix)position
是指:不以下前缀匹配位置。
和position(?!suffix)
表示:匹配位置不在前缀后面。
终于[0-9.]
表示:任何数字或小数点。
它确实得到“仅数字”。也许你的意思是改写标题? – 2012-06-30 19:32:37
'(?:^ |)(\ d +)(?:$ |)' –
@pst准确地说,它只能得到数字序列,因此'\ d'。 – Gumbo