re.split 但仍保持现状

re.split but leaving in the condition

我有一个示例文本字符串 text_var = 'ndTail7-40512-1',我想在第一次看到一个数字后跟一个数字时拆分 - 但我想保留该数字。目前,我有 print(re.split('\d*(?=-)',text_var,1)),我的输出是 ['ndTail', '-40512-1']。但我想保留作为触发器的数字,所以它应该看起来像 ['ndTail', '7-40512-1']。有帮助吗?

我们可以在这里尝试使用 re.findall

text_var = 'ndTail7-40512-1'
matches = re.findall(r'(.*?)(\d-.*$)', text_var)
print(matches[0])

这会打印:

('ndTail', '7-40512-1')

有时使用 re.findallre.split 更容易。

此处使用的正则表达式模式表示:

(.*?)     match AND capture all content up to, but including
(\d-.*$)  the first digit which is followed by a hyphen;
          match and capture this content all the way to the end of the input

请注意,我们使用的 re.findall 通常有可能 return 多个匹配项。然而,在这种情况下,我们的模式匹配到输入的末尾,所以我们只剩下一个包含两个所需捕获组的元组。