Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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 多次捕捉同一条线_Python_Regex_Regex Lookarounds - Fatal编程技术网

Python 多次捕捉同一条线

Python 多次捕捉同一条线,python,regex,regex-lookarounds,Python,Regex,Regex Lookarounds,给定文本 A 01 2 3 4 我想把A和每个数字作为一个单独的匹配,比如 re.findall(some_regex, "A 0 1 2 3 4") 会回来, [ ["A", "0"], ["A", "1"], ["A", "2"], ["A", "3"], ["A", "4"], ] 这是不可能的。但是您可以轻松地生成这样一个列表 x = re.findall("A*[0-9]", "A 0 1 2 3 4") result = [["A", str(c)] for

给定文本

A 01 2 3 4

我想把A和每个数字作为一个单独的匹配,比如

re.findall(some_regex, "A 0 1 2 3 4")
会回来,

[
  ["A", "0"],
  ["A", "1"],
  ["A", "2"],
  ["A", "3"],
  ["A", "4"],
]

这是不可能的。但是您可以轻松地生成这样一个列表

x = re.findall("A*[0-9]", "A 0 1 2 3 4")
result = [["A", str(c)] for c in x]

试试这个,我用了两条Python

进口稀土 text=A 0 1 2 3 4此处显示您的文本 按字母顺序选择属于的第一个字符 在a和z之间,小写或大写。如果你需要 要仅匹配大写字符,只需更改pattern1 进入^[A-Z] pattern2将用数字匹配包含的所有字符串 也就是说从0到9的数字 模式1=^[A-Za-z] 模式2=\d 在re.findallpattern2中打印[re.searchpattern1,text.group0,a] 产出是,

['A',0'],['A',1'],['A',2'],['A',3'],['A',4']]
现在,您可以随意更改第一个字符的位数。

这是不可能的。一个正则表达式总是匹配一个连续的子字符串。默认情况下,所有正则表达式引擎,如果当前搜索位置与上一个匹配位置在同一点匹配,则将当前搜索位置提前1。您可以使用lookback做一些棘手的事情,但是它需要使用一个固定的值,其中使用相应数量的捕获组来固定替换的数量。在PCRE中,您有机会将组数过滤为2,但交替情况仍然存在。在dotnet中,您可以使用单个lookback,而无需进行替换?因此。*?\d将匹配[a,0]。如果你让中间人贪婪,你就得到了4。正则表达式不能以一种非贪婪的方式从0迭代到4?不认为这是可能的。A*\d将得到[,'0','1','2','3','4',],这非常接近。
    dd ='A01234'
    Result = [[dd[0],j] for i,j in enumerate(dd) if i!=0]
    #Output = [['A', '0'], ['A', '1'], ['A', '2'], ['A', '3'], ['A', '4']]