Skip to main content
 首页 » 编程设计

python之在同一个正则表达式中引用前一组可能吗

2024年08月26日24sxdcgaq8080

我正在尝试在 Python 中执行正则表达式。我想匹配没有域扩展名的文件路径,此外,我只想获取在文件路径的最后一个“\”之后最多有 20 个字符的文件路径。例如,给定数据:

c:\users\docs\cmd.exe 
c:\users\docs\files\ewyrkfdisadfasdfaffsfdasfsafsdf 
c:\users\docs\files\target 

我想匹配“目标”,而不是其他两行。应该注意的是,在我目前的情况下,使用 re 模块或 python 操作不是一个选项,因为这个正则表达式被输入到程序中(使用 re.match() ),所以我必须在一个正则表达式字符串。

我有两个正则表达式:

^([^.]+)$ will match the the last 2 lines 
 
([^\\]{,20}$) will match 'cmd.exe' and 'target' 

如何将这两个组合成一个正则表达式?我尝试了反向引用(?P= 等),但无法正常工作。这可能吗?

请您参考如下方法:

\\([^\\.]{1,20})(?:$|\n) 怎么样?它似乎对我有用。

  • \\ 是转义文字反斜杠。
  • ( 捕获组的开始。
  • [^\\.] 匹配除文字反斜杠或文字点字符以外的任何内容
  • {1,20} 匹配类别 1-20 次,尽可能多(贪婪)。
  • )结束捕获组。
  • (?: 开始一个非捕获组
  • $ 匹配字符串的结尾。
  • | 是该组的“或”运算符
  • \n 匹配换行符或换行符 (ASCII 10)
  • )非捕获组结束

为了创建它,我使用了 https://regex101.com/#python在我看来,这是一个非常好的资源,因为它解释了正则表达式的每个部分,并实时清晰地显示捕获的组。