我有一个文件命名模式,例如
这是9876文件名 .1234.ext
OR
thisisa9876文件名 .4321.ext
通过使用
,我可以很容易地为.1234.ext返回一个匹配项。
/(\.\d{4}\.ext)$/
我想做的就是找到匹配的格式(如果不是这种格式的话)。例如
thisisa9876filename.123.ext
OR
这是9876文件名。txe
如果它与该模式不匹配,那么我想返回一个匹配项。
我似乎无法解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:0)
要了解@Nick建议的解决方案,并假设您使用R或可以使用R,则解决方案可以是: 如果这是您的数据(例如):
data <- c("thisisa9876filename .4321.ext", "thisisa9876filename.123.ext",
"this is a 9876 file name.txe", "this is a 9876 file name .1234.ext")
然后您可以使用grep
及其参数invert = T
来匹配模式不匹配的任何内容:
grep("\\d{4}\\.ext$", data, value = T, invert = T)
[1] "thisisa9876filename.123.ext" "this is a 9876 file name.txe"
答案 1 :(得分:0)
如果支持否定的前瞻(?!
,则可以断言该字符串不以您的模式结尾:
^(?!.*\.\d{4}\.ext$).+$
^
字符串的开头(?!
负向前进,断言右边的不是
.*\.\d{4}\.ext$
匹配点和4位数字,并在字符串末尾加上.ext
)
提前关闭.+
匹配除换行符1次以上以外的所有字符$
字符串的结尾