我正在尝试在 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在我看来,这是一个非常好的资源,因为它解释了正则表达式的每个部分,并实时清晰地显示捕获的组。
