Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lookhead/lookaround查找句子中的所有数字_Python_Regex - Fatal编程技术网

Python 使用lookhead/lookaround查找句子中的所有数字

Python 使用lookhead/lookaround查找句子中的所有数字,python,regex,Python,Regex,这是一个句子('第#:'行不是句子的一部分): 我想在python中构造一个正则表达式,以返回每行的所有数字: Line 1 returns: [1, 100, 2, 4.567] Line 2 returns: [11, 101, 21, 44.567] Line 3 returns: [111, 102, 211, 444.567] 我想到的正则表达式是: (?<=Number )\d* (? 对于转换为int和float: >>> try : ... map(

这是一个句子('第#:'行不是句子的一部分):

我想在python中构造一个正则表达式,以返回每行的所有数字:

Line 1 returns: [1, 100, 2, 4.567]
Line 2 returns: [11, 101, 21, 44.567]
Line 3 returns: [111, 102, 211, 444.567]
我想到的正则表达式是:

(?<=Number )\d*
(?
对于转换为
int
float

>>> try :
...  map(int,re.findall(r'[\d\.]+',s))
... except:
...  map(float,re.findall(r'[\d\.]+',s))
... 
[1.0, 100.0, 2.0, 4.567]
对于转换为
int
float

>>> try :
...  map(int,re.findall(r'[\d\.]+',s))
... except:
...  map(float,re.findall(r'[\d\.]+',s))
... 
[1.0, 100.0, 2.0, 4.567]
您的lookback
(?>>s=“数字1是100,数字2是4.567”
>>>关于findall(r“(?您的lookback
(?>>s=“数字1是100,数字2是4.567”

>>>关于findall(r)(?try
s=“111号是102,1211号是444.567”
try
s=“111号是102,1211号是444.567”
行的格式是否良好?您是否期望任何
123.456.789
或句尾编号
为4.5。
?行的格式是否良好?您是否期望任何
123.456.789
或句尾编号
为4.5。
>>> s="Number 1 is 100, number 2 is 4.567"
>>> import re
>>> re.findall(r'\b[\d\.]+\b',s)
['1', '100', '2', '4.567']
>>> try :
...  map(int,re.findall(r'[\d\.]+',s))
... except:
...  map(float,re.findall(r'[\d\.]+',s))
... 
[1.0, 100.0, 2.0, 4.567]
>>> s = "Number 1 is 100, number 2 is 4.567"
>>> re.findall(r"(?<=Number )\d+", s, re.I)
['1', '2']
>>> re.findall(r"(?<=Number )\d+|(?<=Is )[\d\.]+", s, re.I)
['1', '100', '2', '4.567']