【发布时间】:2019-12-18 15:04:46
【问题描述】:
我正在尝试匹配文件名中由点分隔的任意数量的文字 # 符号。文字 # 符号必须在两边用点分隔,除非它是文件名的最后一个元素。我可以创建一个模式来执行第一个(匹配由点包围的任何文字 # 符号),但我不能这样做,同时还允许第二个(以文字 # 符号结尾且没有尾随点的文件名)。
例如,以下将匹配:
bob.#
bob.#.
bob.#.exr
bob.##.mary.tif
bob.####.png
而以下不匹配:
bob.#string.exr
bob.string#.exr
到目前为止,我的模式(在 python 中表示为原始字符串)是:
(.*)(\.#+)((?:\.+.*|$))
不幸的是,它与我列表中的第一项不匹配:bob.#
我原以为最后一个非捕获组基本上会读作:
匹配一个文字点,后跟 0 个或多个字符
或
匹配字符串的结尾
但在 regexr.com 中对其进行测试显示它与 bob 不匹配。#
提前感谢任何线索!
【问题讨论】:
标签: python regex regex-group