我有下面找到给定的模式并返回它而没有中间的空格。这样做有效,但我还想在子/
和\g<2>
之间添加\g<3>
,但只有当它不存在时才会在//
和pattern = re.compile(r"((\d{1,2}/\d{1,2}) (/?(\d{4}|\d{2})))")
report_text = pattern.sub("\g<2>\g<3>", report_text)
之间添加Inputs Expected
02/58 98 02/58/98
02/58 /98 02/58/98
02/58 9518 02/58/9518
02/58 /98 02/58/9518
。否则会有重复UIDevice.current.userInterfaceIdiom
。我尝试的所有东西都会弄乱捕获组。有什么帮助吗?
public enum UIUserInterfaceIdiom : Int {
case unspecified
@available(iOS 3.2, *)
case phone // iPhone and iPod touch style UI
@available(iOS 3.2, *)
case pad // iPad style UI
@available(iOS 9.0, *)
case tv // Apple TV style UI
@available(iOS 9.0, *)
case carPlay // CarPlay style UI
}
以下是我的输入和预期结果:
Buffer.BlockCopy(onedim, 0, twodim, 0, onedim.Length * sizeof(int));
答案 0 :(得分:2)
您的模式似乎过度使用捕获组。您可以将可选/?
置于捕获组之外,以便匹配但不重新插入,只需在替换中使用/
,例如
re.sub(r'(\d{1,2}/\d{1,2}) /?(?:(\d{4}|\d{2}))', r'\g<1>/\g<2>', report_text)