基本上,我有这个字符串,我只想获取一个不同的图像文件名。
/mPastedImg_Time1469244713469.png&gtxResourceFileName=mPastedImg_Time1469244713469.png&
我有此正则表达式代码,但似乎不起作用。
[^\/]*?_Time[0-9]{13}\.\w{3,4}\&
我的预期输出是:
mPastedImg_Time1469244713469.png
但是实际输出是:
mPastedImg_Time1469244713469.png&gtxResourceFileName=mPastedImg_Time1469244713469.png&
答案 0 :(得分:2)
要在字符串中查找唯一的文件名,可以使用此正则表达式,
([^\/&= ]+_Time[0-9]{13}\.\w{3,4})(?!.*\1)
在这里,([^\/&= ]+_Time[0-9]{13}\.\w{3,4})
将捕获您所需的文件名,而(?!.*\1)
的否定前瞻会为您提供最后一个匹配项,从而确保删除字符串中所有重复的匹配项。另外,由于使用了适当的否定字符集,它还允许匹配文件名中也要捕获的中文字符集。
答案 1 :(得分:1)
您的模式有2个匹配项,由于否定的字符类[^\/]
与正斜杠不匹配,因此第二部分的匹配项较大。
您可能要做的是使第一个字符类更具限制性,以指定允许匹配的内容(例如[a-zA-Z]
),并确保您不使用全局匹配来匹配所有内容,而只是一场比赛:
[a-zA-Z]*_Time[0-9]{13}\.\w{3,4}
请注意,您不必在模式结尾处匹配与号。
答案 2 :(得分:0)
我认为您已经非常接近它了,但是您做的太复杂了:
如果您知道该名称为mPastedImg_Time
,请充分使用它。
像这样简单地做呢?
mPastedImg_Time[0-9]{13}\.\w{3,4}