我正在尝试建立一个正则表达式,它将两个搜索组合成一个完整的匹配项。
我的演示字符串为:
Name Klein Vorname Marvin
正则表达式应该找到:Marvin Klein
名称可以不同。有人知道我怎样才能使它正常工作吗?
这是我已经获得的收益:^(?=^Name)(?=.*$)
谢谢!
答案 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'