Notepad ++正则表达式组捕获

pns*_*slg 47 regex notepad++

我有这样的txt文件:

???.prontube.ru
salo.ru
bbb.antichat.ru
yyy.ru
xx.bb.prontube.ru
zzz.com
srfsf.jwbefw.com.ua
Run Code Online (Sandbox Code Playgroud)

尝试删除具有此类正则表达式的所有子域:

Find:    .+\.((.*?)\.(ru|ua|com\.ua|com|net|info))$
Replace with: \1
Run Code Online (Sandbox Code Playgroud)

接收:

prontube.ru
salo.ru
antichat.ru
yyy.ru
prontube.ru
zzz.com
com.ua
Run Code Online (Sandbox Code Playgroud)

为什么最后一行com.ua代替jwbefw.com.ua

jpm*_*c26 49

这无需环顾四周:

查找:[a-zA-Z0-9-.]+\.([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+)$ 替换:\1\.\2

它会找到至少有2个句点的内容,并且在最后两个句点之后只能找到字母,数字和短划线; 然后用最后两部分替换它.在我看来,更直观.

这个领先者有一些有趣的事情xxx.它似乎不是纯ASCII.为了这个问题,我将假设这个网站只是一些有趣的东西而不能代表您的真实数据.

不正确

有趣的是,我之前在这里得到了一个错误的答案,积累了很多赞成票.所以我认为我应该保留它:

查找:[a-zA-Z0-9-]+\.([a-zA-Z0-9-]+)\.(.+)$ 替换:\1\.\2

它只找到一个主机名,其中包含至少2个句点,然后将其替换为第一个点后的所有内容.


Nie*_*sol 9

.+部分尽可能匹配.尝试使用.+?,它将捕获尽可能少,允许com.ua选项匹配.