我认为,以下代码适用于Python中使用的正则表达式。如果在正则表达式之外还有另一种方法可以做到这一点,那么我对此持开放态度。
我需要输入以下格式的字符串:
'{First_name1} and {First_name2 Last_name}'
(i.e. John and Mary Jones)
收件人:
'{First_name1 Last_name2}, {First_name2 Last_name2}
(i.e. John Jones, Mary Jones)
对正则表达式不熟悉,这是困扰我的一种模式。我假设我必须找到整个段的实例,捕获姓氏,然后使用.sub()在正确的位置添加副本?
编辑:到目前为止,虽然提出的解决方案确实回答了这个问题,但我想我要提到的是,到目前为止,我发现了另一种情况。如下:
{First_name1 Last_name1, and First_name2, Last_name2}
很抱歉以前没有看过(因此写在我最初的问题中)这种模式。
到目前为止,我已经修改了答案之一以实现这一目标:
([^,]+)(?!\W,)( and [^ ]+ )([^ ]+)
在上一个示例中,我认为我会根据该逗号进行过滤。我的想法是,如果出现逗号,那么我想继续讲下一种情况。这有道理吗?
答案 0 :(得分:2)
如果您的数据始终采用这种格式,那么我看不到要进行正则表达式,您只需拆分字符串并使用索引即可以所需的格式构造所需的名称:
a = 'John and Mary Jones'
a_split = a.split()
[(a_split[0], a_split[-1]), (a_split[-2], a_split[-1])]
结果
[('John', 'Jones'), ('Mary', 'Jones')]
答案 1 :(得分:1)
答案 2 :(得分:0)
在@MonkeyZeus的帮助下,这成功了:
(?!\s)(\W[^\W,]+)(?!,)( and [^ ]+ )([^ ]+)