请帮忙。我正在尝试提出一个常规表达式,它总能找到与粗体文本匹配的内容。问题是某些文件名会有一个" -n"和其他人不会。
test_Index_的 060215 _E01.pdf
test_Index_的 060215-1 _E01.pdf
我试过了:
test_Index_+([0-1]+[0-9]+[0-3]+[0-9]+[0-9]+[0-9]+)_E01.pdf
但它只能找到 060215
和
test_Index_+([0-1]+[0-9]+[0-3]+[0-9]+[0-9]+[0-9]+\D+\d+)_E01.pdf
才发现 060215-1
我无法通过一个表达式获得两者的匹配。有人可以帮助使用一个表达式,它总是用我的文件名结构拉出结果吗?
答案 0 :(得分:3)
您可以使用以下正则表达式:
test_Index_([\d-]+)
或者您可以使用我更喜欢的否定字符类:
test_Index_([^_]+)
答案 1 :(得分:0)
答案 2 :(得分:0)
这将做你想要的:
^test_Index_\d+-{0,1}\d*_E01\.pdf$
此外,如果您希望它更精确(因为看起来您匹配日期),您可以这样做:
^test_Index_\d{6}-{0,1}\d*_E01\.pdf$
答案 3 :(得分:0)
您最好的选择是使用延迟量词?
,因为它表示以下内容:
匹配前面标记的0或1,有效地使其成为可选。
如果您将-1或任何数字的匹配组指定为可选,则含义:
(-\d)?
因此你会得到一个正则表达式:
test_Index_(\d{6})(-\d)?_E01\.pdf
另外,请确保您了解+
令牌的使用情况以及您逃脱期限。