Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

StringFilter

A text filtering program developed by Delphi mainly uses the regular expression function of. Can be used to process text.

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

StringFilter

A text filtering program developed by Delphi mainly uses the regular expression function of. Can be used to process text.

本程序主要功能是实现文本文件过滤,能够从文本文件提取需要的数据,或者格式化文本文件,是从我爬虫程序里面提取的,通过配置,能够实现绝大部分的文本过滤处理。

配置文件是json格式,说明请看目录下conf.js的注释

msf.exe 是命令行程序 支持文本输入命令和参数输入,2者的格式一致。命令行参数为

filter conf=conf.js from=src.txt to=aa.txt print

filter 是主命令,对文本进行过滤,可以省略。 conf=conf.js 配置文件路径, from=src.txt 源文件的路径, to=aa.txt 输出结果文件路径 print 控制台打印输出结果,如果to参数是空,则默认打印,除非存在 print=false参数。 以上文件路径相对目录绝对目录都可以

TestStringFilter.exe 一个带界面的测试程序

需要qdac的qjson。地址 http://www.qdac.cc/

配置说明如下: //本配置是兼容的json格式,兼容常见的json格式。

{ FullToHalf:false, //全角转半角 HtmlUnescape:false, //HTML解码 MultiValueSpliter:"\r\n", //多个值之间的分割符,此处是回车和换行,同样可以是 , ; 等。

pascal
//Filters是按照顺序执行的过滤方法。包括 ftCopy,ftReplace,ftMatch,ftDelete 四种操作
/*
    ????????????????????????????????????????????? {
        字段				可选		类型	说明
        -------------------------------------------
        FilterType			必须		字符串	操作类型
        RegException 		可选		布尔	是否表达式,默认false,只支持 false和true2个值
        Exception1 			必须		字符串	表达式1
        Exception2 			可选		字符串	表达式2,ftCopy,ftReplace,ftMatch时候,是必选项
        FilterOptions		可选		字符串	操作选项,内容是foIgnoreCase, foAll, foRegMultiLine, foRegSingleLine 的组合数组  例如:FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
                                                foIgnoreCase		???????????????				??????false		
                                                foAll				????????????				??????false
                                                foRegMultiLine		??????????????????????????????	??????false
                                                foRegSingleLine		??????????????????????????????	??????true
        Parallel			??????		??????	????????????????????????
                                                true	??????????????????????????????????????????????????????????????????
                                                false	???????????????????????????????????????							
        MultiValueSpliter	??????		?????????	?????????????????????????????????MultiValueSpliter??????????????????????????????????????????????????????						
        BeforeStr			??????		?????????	???????????????????????????????????????????????????
        AfterStr			??????		?????????	???????????????????????????????????????????????????
pascal
??????????????????????????????	
ftCopy 		???????????????????????????????????????Exception1??????????????????Exception2??????????????? ????????????????????????????????????????????????FilterOptions ??????foAll??????????????????????????????????????????????????????
ftReplace	????????????Exception1?????????????????????Exception2???????????????Exception1????????????????????????Exception2?????????$0 $1 ???????????????
ftMatch		????????????????????????ftCopy???????????????????????????????????????Exception2??????????????????????????????????????????????????????ftReplace?????????
fgDelete	?????????????????????Exception2=""??????????????????ftReplace??????Exception1 Exception2 ????????????????????????2????????????????????????
pascal
?????????
    1?????????????????????????????????js????????????????????????\\
    2???Filters????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
pascal
*/
pascal
Filters:[
    {FilterType:"ftCopy",RegException:false,Exception1:"",Exception2:"",FilterOptions:"[foAll]" },
    {FilterType:"ftReplace",RegException:true,Exception1:"<script>s5f\\(\"([^\"]*?)\"\\);</script>",Exception2:" ($1)",FilterOptions:"[foIgnoreCase,foAll]" },
    {FilterType:"ftReplace",RegException:true,Exception1:"]*?dicpy[^>]*>(.*?)(()|())",Exception2:"$1",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
pascal
{FilterType:"ftReplace",RegException:true,Exception1:"<script[^>]*>.*?</script>",Exception2:"",FilterOptions:"[foIgnoreCase,foAll]" },
{FilterType:"ftReplace",RegException:true,Exception1:"]*>.*?",Exception2:"",FilterOptions:"[foIgnoreCase,foAll]" },
{FilterType:"ftReplace",RegException:true,Exception1:"]*>.*?",Exception2:"",FilterOptions:"[foIgnoreCase,foAll]" },
{FilterType:"ftReplace",RegException:false,Exception1:"&amp;",Exception2:"&",FilterOptions:"[foIgnoreCase,foAll]" },
pascal
// {FilterType:"ftReplace",RegException:true,Exception1:"

]>(.?)

",Exception2:"||$1||,",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine {FilterType:"ftReplace",RegException:true,Exception1:"(.?)",Exception2:"$1",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine {FilterType:"ftReplace",RegException:true,Exception1:"]?>\s*",Exception2:"",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine

pascal
{FilterType:"ftReplace",RegException:true,Exception1:"(.*?)",Exception2:"\"Char\":\"$1\",",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
pascal
{FilterType:"ftReplace",RegException:true,Exception1:"(.*?)",Exception2:"$1\\r\\n",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
{FilterType:"ftReplace",RegException:true,Exception1:"",Exception2:"",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
pascal
{FilterType:"ftReplace",RegException:true,Exception1:"]*?charu_yc_url[^>]*>(.*?)",Exception2:"",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
pascal
{FilterType:"ftReplace",RegException:true,Exception1:"]*>(.*?)",Exception2:"$1",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
{FilterType:"ftReplace",RegException:true,Exception1:"]*>(.*?)",Exception2:"$1",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
{FilterType:"ftReplace",RegException:true,Exception1:"",Exception2:"",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine
{FilterType:"ftReplace",RegException:true,Exception1:"

]>(.?)

",Exception2:"",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine {FilterType:"ftReplace",RegException:true,Exception1:"(.?)",Exception2:""$1":"$2",",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine {FilterType:"ftReplace",RegException:true,Exception1:"(.?)",Exception2:""$1":"$2",",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine {FilterType:"ftReplace",RegException:false,Exception1:"'",Exception2:"''",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine {FilterType:"ftReplace",RegException:false,Exception1:"\",Exception2:"\\",FilterOptions:"[foIgnoreCase, foAll]"},//, foRegMultiLine

pascal
{FilterType:"ftReplace",RegException:true,Exception1:"<br[^>]*>",Exception2:" ",FilterOptions:"[foIgnoreCase,foAll]" },
{FilterType:"ftReplace",RegException:true,Exception1:"",Exception2:"",FilterOptions:"[foIgnoreCase,foAll]" },
{FilterType:"ftReplace",RegException:true,Exception1:"\\n+",Exception2:"\n",FilterOptions:"[foIgnoreCase, foAll]" },
pascal
//  {FilterType:"ftReplace",RegException:false,Exception1:"\"",Exception2:"\\\"",FilterOptions:"[foIgnoreCase,foAll]" },
//  {FilterType:"ftReplace",RegException:false,Exception1:"||",Exception2:"\"",FilterOptions:"[foIgnoreCase,foAll]" },
{Parallel:true, FilterType:"ftMatch",RegException:true,Exception1:"[^)]*>",Exception2:"\"swjzimg\":$1 ",FilterOptions:"[foIgnoreCase,foAll]" },
//    {FilterType:"ftReplace",RegException:true,Exception1:"]*?)\"[^>]*>$",Exception2:"\"swjzimg\":\"$1\"",FilterOptions:"[foIgnoreCase,foAll, foRegMultiLine]" },
//    {FilterType:"ftReplace",RegException:true,Exception1:".*?(\"swjzimg.*)$",Exception2:"$1",FilterOptions:"[foIgnoreCase,foAll, foRegMultiLine]" },
{FilterType:"ftReplace",RegException:true,Exception1:"^ ",Exception2:" ",FilterOptions:"[foIgnoreCase, foAll, foRegMultiLine]" }   ,
pascal
{FilterType:"ftReplace",RegException:true,Exception1:"]*?)\"[^>]*>",Exception2:"",FilterOptions:"[foIgnoreCase,foAll]" },
//   	{FilterType:"ftReplace",RegException:true,Exception1:"\\s*$",Exception2:"",FilterOptions:"[foIgnoreCase, foAll, foRegMultiLine]" }   ,
// {FilterType:"ftReplace",RegException:true,Exception1:"\"\\s+",Exception2:"\"",FilterOptions:"[foIgnoreCase, foAll, foRegMultiLine]" }   ,
{FilterType:"ftReplace",RegException:true,Exception1:"([^,])[\\r\\n]+",Exception2:"$1",FilterOptions:"[foIgnoreCase, foAll, foRegMultiLine]" }   ,
{FilterType:"ftMatch",RegException:true,Exception1:"(.+)",Exception2:"{$1}",FilterOptions:"[foIgnoreCase, foAll]" }   ,
pascal
// {FilterType:"ftReplace",RegException:true,Exception1:"\\s+",Exception2:"",FilterOptions:"[foIgnoreCase, foAll]" }
pascal
]

}