找到指定文本后删除行上的所有文本

时间:2017-06-13 15:40:41

标签: regex ide ascii comma delimited-text

我正在使用一个名为TextCrawler Pro的程序,它允许我以宏的形式运行。

我想每天清理一个天气页面,以便从中获取:

Billings, MT;93;62;80;53;Not as warm;NNE;10;44%;20%;8

Birmingham, AL;80;70;81;69;Thunderstorms;SSW;6;81%;90%;4

Bismarck, ND;92;57;92;63;Mostly sunny;SE;12;46%;36%;8

Boise, ID;85;51;77;49;Mostly sunny, nice;N;8;36%;0%;8

到此:

Billings, MT;93;62;80;53;

Birmingham, AL;80;70;81;69;

Bismarck, ND;92;57;92;63;

Boise, ID;85;51;77;49;

我可以找到使用\;\d+\;\d+\;\d+\;\d+\;,但我无法删除到该行的末尾。

我尝试将\r\n添加到上面的结尾,如下所示:\;\d+\;\d+\;\d+\;\d+\;\r\n

但是用实际的正则表达式代码替换了我所有的城市信息。

有什么想法吗?我觉得我错过了很简单的事情。

2 个答案:

答案 0 :(得分:0)

(.*\,\s[A-Z]+;\d{2};\d{2};\d{2};\d{2};)(.+)

第一组是你所追求的,忽略第二组。 See it here

答案 1 :(得分:0)

将有许多不同的模式可以成功地为您删除不需要的子串。这里有一些我已经熟了。 (Demo

  

67个步骤^([^;]+;[^;]+;[^;]+;[^;]+;[^;]+;).*$我列表中最有效的模式

91步^((?:[^;]+;){5}).*$

127步(.+?;.+?;.+?;.+?;.+?;).*

157步((?:.+?;){5}).*

163步(.+?;)[^\d].*

185步(.+\d{2};)[A-Z].*

280步(.*\,\s[A-Z]+;\d{2};\d{2};\d{2};\d{2};)(.+)

删除不需要的部分的方法是将整行替换为所需的部分。

参考这些文件页面:

https://www.digitalvolcano.co.uk/textcrawlermanual/regular_expression_reference_guide.htm

https://www.digitalvolcano.co.uk/textcrawlermanual/regular_expression_find_replace.htm

  

您应该只能使用$1作为替换值,所有内容都将被清理。