将正则表达式搜索合并到一个匹配项中

时间:2020-07-16 13:49:03

标签: regex

我正在尝试建立一个正则表达式,它将两个搜索组合成一个完整的匹配项。

我的演示字符串为:

Name Klein Vorname Marvin

正则表达式应该找到:Marvin Klein

名称可以不同。有人知道我怎样才能使它正常工作吗?

这是我已经获得的收益:^(?=^Name)(?=.*$)

谢谢!

1 个答案:

答案 0 :(得分:0)

在Python中,使用标记的组并常规搜索字母字符:

import re

demo_str = "Name Klein Vorname Marvin"

pattern = r"""
    (?:[\w]+)           # Skip the first string ('Name')
    \s+?                # One or more whitespaces
    (?P<last>[\w]+)     # Tagged group 'first'
    \s+?                # One or more whitespaces
    (?:[\w]+)           # Skip the second string ('Vorname')
    \s+?                # One or more whitespaces
    (?P<first>[\w]+)    # Tagged group 'last'
    """

res = re.search(pattern, demo_str, flags = re.X) # re.X handles multi-line patterns

res.group("last") # 'Klein'
res.group("first") # 'Marvin'

编辑:您可以重新格式化以快速获得输出。我不知道定位是否应该成为模式的一部分。

" ".join([res.group("first"), res.group("last")]) # 'Marvin Klein'

或者,按数字:

" ".join([res.group(2), res.group(1)]) # 'Marvin Klein'
相关问题