字符串表示文件名,其中的字符子串以“.”分隔。每个字符串都有不同数量的子字符串,每个子字符串都可以是任何文本,除了最后一个子字符串,即文件扩展名。我只想保留最后一个子字符串 S1 和文件扩展名;例如:
我拥有的:
S4.S3.S2.S1.txt
S2.S1.txt
S3.S2.S1.txt
S1.txt
我想要的是:
S1.txt
S1.txt
S1.txt
S1.txt
其中S1
,,,, … 可以是任何内容(字母、数字、括号、嵌入连字符),S2
并且S3
每行都不同,而最后一个子字符串(本例中为 txt)始终相同。我正在尝试为此构建一个 REGEX,但失败了。有人能建议一种方法来做到这一点吗?
答案1
尝试这个:
查找内容:^.*[^\w](\w+\.\w+)$
替换为:\1
解释:
`^` - start of line
`.*` - one or zero characters
`[^\w]` - one character which is not a word (alphanumeric or underscore)
`(` - start of group 1
`\w+` - one or more word characters
`\.` - the character `.` escaped
`\w+` - one or more word characters
`)` - end of group 1
`$` - end of line
答案2
- Ctrl+H
- 找什么:
^.*?(?=[^.]+\.[^.]+\.[^.]+$)
- 用。。。来代替:
LEAVE EMPTY
- 查看 环绕
- 查看 正则表达式
- 取消选中
. matches newline
- Replace all
解释:
^ # beginning of line
.*? # 0 or more any character but newline
(?= # positive lookahead, make sure we have after:
[^.]+ # 1 or more non dot
\. # 1 dot
[^.]+ # 1 or more non dot
\. # 1 dot
[^.]+ # 1 or more non dot
$ # end of line
) # end lookahead
截图(之前):
截图(之后):