正则表达式。使用Python将Pathstring中的front和姓氏分组

正则表达式。使用Python将Pathstring中的front和姓氏分组,python,regex,Python,Regex,我需要从以下字符串(文件夹名称)中提取名称。我把它们做成粗线。 一些例子: '.\\\\Jens, Jensen\\\\Rechnungen\\\\Rechnungen 2020\\\\somefoldername' '.\\Harald, Hardraala\\Rechnungen 2017' '.\\A - H\\Johan, Johanson\\Rechnungen 2017' '.\\\\Jens-Haudraf, Johan\\\\Rechnungen\\\\Rechnungen 20

我需要从以下字符串(文件夹名称)中提取名称。我把它们做成粗线。 一些例子:

'.\\\\Jens, Jensen\\\\Rechnungen\\\\Rechnungen 2020\\\\somefoldername'
'.\\Harald, Hardraala\\Rechnungen 2017'
'.\\A - H\\Johan, Johanson\\Rechnungen 2017'
'.\\\\Jens-Haudraf, Johan\\\\Rechnungen\\\\Rechnungen 2020\\\\anotherfoldername'
'.\\A - H\\Funke, Felix'
我想把名字放在一组里。我做不到。这就是我想到的

r'\\*(\w*\-{0,1},{0,1} {0,1}\w*)'

非常感谢您的任何想法。

以下代码将提取名称,假设格式保持不变,即一个单词名(可能带有连字符)+逗号+另一个单词名(可能带有连字符)


您可以将后跟单词字符的反斜杠与可选的连字符部分相匹配。然后匹配空格,然后再次匹配单词字符

该值位于第一个捕获组中

图案

部分地

  • \\
    匹配
    \
  • Capturegroup 1
    • \w+(?:-\w+)
      将1+字字符与可选的和1+字字符进行匹配
    • ,\w+
      匹配逗号、空格和1+字字符
  • 关闭第1组
|

示例代码

输出


你要找的是“姓,名”吗?
import re
strings = ['.\\\\Jens, Jensen\\\\Rechnungen\\\\Rechnungen 2020\\\\somefoldername',
'.\\Harald, Hardraala\\Rechnungen 2017',
'.\\A - H\\Johan, Johanson\\Rechnungen 2017',
'.\\\\Jens-Haudraf, Johan\\\\Rechnungen\\\\Rechnungen 2020\\\\anotherfoldername',
'.\\A - H\\Funke, Felix']

matches = [ re.search("[\w-]+, [\w-]+",s).group() for s in strings ]

print(matches)
>>>
['Jens, Jensen', 'Harald, Hardraala', 'Johan, Johanson', 'Jens-Haudraf, Johan', 'Funke, Felix']
\\(\w+(?:-\w+)?, \w+)
import re

regex = r"\\(\w+(?:-\w+)?, \w+)"
strings = [
    '.\\\\Jens, Jensen\\\\Rechnungen\\\\Rechnungen 2020\\\\somefoldername',
    '.\\Harald, Hardraala\\Rechnungen 2017',
    '.\\A - H\\Johan, Johanson\\Rechnungen 2017',
    '.\\\\Jens-Haudraf, Johan\\\\Rechnungen\\\\Rechnungen 2020\\\\anotherfoldername',
    '.\\A - H\\Funke, Felix'
]

for s in strings:
    matches = re.search(regex, s)
    if matches:
        print(matches.group(1))
Jens, Jensen
Harald, Hardraala
Johan, Johanson
Jens-Haudraf, Johan
Funke, Felix