如果表达式在单独的行中,如何获得regex等价项?

2024-10-03 21:36:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下字符串:

Datum Kundnummer Sida
2018-10-12 196979 1 /2

上面的两条线是分开的

regex等价于什么,以便我得到以下输出?你知道吗

Datum 2018-10-12
Kundnummer 196979

以上两个是独立的输出

我想要的输出,使之适用于所有日期的数据和所有数字在Kundnummer。你知道吗

我试过Datum\s([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))Kundnummer\s(\d+)。你知道吗


Tags: 数据字符串数字regex等价datum两条线sida
3条回答

我假设第一行中的数据总是相同的,所以我会忽略它。你知道吗

要从第二行获取“Datum”和“Kundennummer”条目,请使用(?P<datum>\d{4}\-\d{1,2}\-\d{1,2})\s(?P<kundennummer>\d+?).*。你知道吗

正如@PyHunterMan所解释的,您也可以在空白处拆分字符串。那可能是更简单的方法。你知道吗

我建议这样:

reobj = re.compile(r"(?P<datum>\d{4}-\d{1,2}-\d{1,2})\s+(?P<kundnummer>\d+)")
match = reobj.search(input)
if match:
    result1 = match.group("datum")
    result2 = match.group("kundnummer")

当你不用正则表达式就可以用简单的代码行来实现它的时候,你为什么还要按时计算呢。你知道吗

_input = "Datum Kundnummer Sida\n2018-10-12 196979 1 /2"
lines = _input.split('\n')
old_line_one, old_line_two = lines[0].split(), lines[1].split()
new_line_one = f'{old_line_one[0]} {old_line_two[0]}'
new_line_two = f'{old_line_one[1]} {old_line_two[1]}'
print(f'{new_line_one}\n{new_line_two}')

相关问题 更多 >