Python 获取每个间隙的前三位数字
刚开始学习正则表达式。我这里有问题 这是到目前为止我的代码Python 获取每个间隙的前三位数字,python,regex,Python,Regex,刚开始学习正则表达式。我这里有问题 这是到目前为止我的代码 match = re.findall(r'\d{1,3}', string) 我知道我会得到第三个号码。但我不知道如何只说出每一个差距 我有一个字符串,看起来像这样: string = "24812949 2472198 4271748 12472187" ["248", "247", "427", "124"] 我想要这样的结果: string = "24812949 2472198 4271748 12472187" ["2
match = re.findall(r'\d{1,3}', string)
我知道我会得到第三个号码。但我不知道如何只说出每一个差距
我有一个字符串,看起来像这样:
string = "24812949 2472198 4271748 12472187"
["248", "247", "427", "124"]
我想要这样的结果:
string = "24812949 2472198 4271748 12472187"
["248", "247", "427", "124"]
使用单词边界
\b
<代码>\b匹配单词字符和非单词字符
match = re.findall(r'\b\d{1,3}', string)
match = re.findall(r'(?<!\S)\d{1,3}', string)
或
否定的后视断言<代码>(?断言匹配前面不会有非空格字符
match = re.findall(r'\b\d{1,3}', string)
match = re.findall(r'(?<!\S)\d{1,3}', string)
match=re.findall(r'(?使用单词边界\b
\b
匹配单词字符和非单词字符
match = re.findall(r'\b\d{1,3}', string)
match = re.findall(r'(?<!\S)\d{1,3}', string)
或
负查找断言。(?断言匹配前面不会有非空格字符
match = re.findall(r'\b\d{1,3}', string)
match = re.findall(r'(?<!\S)\d{1,3}', string)
match=re.findall(r'(?您可以添加\b
作为单词边界:
>>> re.findall(r'\b\d{1,3}', string)
['248', '247', '427', '124']
但是,如果字符串始终为这种形式,则可以不使用正则表达式:
>>> [i[:3] for i in string.split()]
['248', '247', '427', '124']
您可以添加\b
作为单词边界:
>>> re.findall(r'\b\d{1,3}', string)
['248', '247', '427', '124']
但是,如果字符串始终为这种形式,则可以不使用正则表达式:
>>> [i[:3] for i in string.split()]
['248', '247', '427', '124']
(?:^ |)(?(?:^ |)(?尝试以下解决方案:-
string="24812949 2472198 4271748 12472187"
match = re.findall(r'\b\d{1,3}', string)
print match
输出:-['248',247',427',124']尝试以下解决方案:-
string="24812949 2472198 4271748 12472187"
match = re.findall(r'\b\d{1,3}', string)
print match
输出:-['248'、'247'、'427'、'124']我很惊讶,没有人会考虑消费剩余的数字,而不是担心边界:
>>> re.findall(r'(\d{1,3})\d*', string)
['248', '247', '427', '124']
通过捕获前3位数字(如果数字较小,则小于3位)下一个匹配在一个数字的中间不可能发生。当前一个匹配结束时,下一个字符之后,如果有的话,必须是非数字的,并且由于引擎从左到右扫描,下一个匹配将从一个数字串的开头开始。
re.findall
当正则表达式中至少有一个捕获组时,函数也只返回捕获组中的内容,这会使整个过程变得平滑。我很惊讶没有人会考虑使用剩余的数字,而不是担心边界:
>>> re.findall(r'(\d{1,3})\d*', string)
['248', '247', '427', '124']
通过捕获前3位数字(如果数字较小,则小于3位)下一个匹配在一个数字的中间不可能发生。当前一个匹配结束时,下一个字符之后,如果有的话,必须是非数字的,并且由于引擎从左到右扫描,下一个匹配将从一个数字串的开头开始。
re.findall
当正则表达式中至少有一个捕获组时,函数也只返回捕获组中的内容,这会平滑整个过程。是的,我知道我可以使用[i[:3]for i in string.split()]
。但我正在尝试学习正则表达式;)是的,我知道我可以使用[i[:3]对于字符串中的i.split()]
。但我正在尝试学习正则表达式;)