类似这样的字符串,格式固定是
任意数量的英文字母 + . + 任意数量的英文字母 + . + 任意数量的英文字母 + . + 任意数量的英文字母
比如这样 dkfj.wer.dkfjj.sldkf
我只想要最后 sldkf 这个字符串,如何用正则匹配过滤掉前面的 dkfj.wer.dkfjj.
类似这样的字符串,格式固定是
任意数量的英文字母 + . + 任意数量的英文字母 + . + 任意数量的英文字母 + . + 任意数量的英文字母
比如这样 dkfj.wer.dkfjj.sldkf
我只想要最后 sldkf 这个字符串,如何用正则匹配过滤掉前面的 dkfj.wer.dkfjj.
|
czytJul 22, 2022
1
试试 (?<=\w+\.)\w+$
|
|
wxf666Jul 22, 2022
2
$ sed 's/^.*\.//' <<<'dkfj.wer.dkfjj.sldkf'
输出: sldkf |
|
HardrainJul 22, 2022
3
`[a-zA-Z]+\.[a-zA-Z]+\.[a-zA-Z]+\.([a-zA-Z]+)`
取$1 如果仅小写, 替换`a-zA-Z`为`a-z` ``` $ cat /tmp/sample.txt dkfj.wer.dkfjj.sldkf $ sed -Ee 's/[a-zA-Z]+\.[a-zA-Z]+\.[a-zA-Z]+\.([a-zA-Z]+)/\1/' /tmp/sample.txt sldkf ``` |
|
wxf666Jul 22, 2022
4
仅捕获想要的字符串:
[^.]*$ |
|
haodingzanJul 23, 2022
5
看起来是要做数据清洗,提取需要的值。
找个支持正则的编辑器,比如 VS Code 查找:^.*\. --> 从整句开头开始查找所有内容,结尾为一个“.” 替换:空 剩下的就是你要的了 |
|
6
|
|
maskerJul 23, 2022 via Android
7
正向断言
|
|
hitaoguoJul 23, 2022
8
这个需求不一定非要正则啊,split 拿最后
|
|
512357301Jul 23, 2022 via Android
9
|
|
zhuweiyouJul 24, 2022
10
这不需要正则, split('.').pop() 就完事了
|