簡體   English   中英

正則表達式 - 如果模式匹配,則在雙引號之間替換字符(逗號)

[英]Regex - replace a characters(comma) between double quotes if the pattern is matched

我有來自Exchange服務器的這個日志

2010-05-20T01:53:33.097Z,12.10.53.144,,12.10.53.200,EXHUB-10,08CCC3F50C35F2D2; 2010-05-20T01:53:32.128Z; 0,EXHUB-10 \\默認EXHUB-10,SMTP, RECEIVE,829888 ,, norma @ ccc.gov.my ,, 521647,1 ,,,“NEAC分工作組會議 - 勞動力升級技能和加強職業技術培訓 - 2010年5月24日星期一下午2:30 ”,lee.cheesung @ gmail.com,<>,00A:

我使用這個正則表達式來匹配和分組模式;

?(\\ d {4} - \\ d {2} - \\ d {2})(?:[\\ W \\ S] +)(\\ d +:\\ d +:\\ d + \\ d +)(:[\\ W + \\ d。] *),(。*?),(。*?),(。*?),(。*?),(。*?),(。*?),(。*?),(。 ????*),(*),(*),(*),([ '“]。* ['”] |。?。*),(*),(*)?? (?*),(?*),(。*?),(?*),(。*?),(?:(\\ d {4} - \\ d {2} - \\ d { 2} \\ W \\ d {2}:\\ d {2}:\\ d {2} \\ d +)(:?\\ W +)*)*(*)

基本上,日志中的信息由逗號分隔。 不幸的是,對於“電子郵件主題”字段,如果用戶輸入逗號,則日志將以雙引號顯示,例如上面的示例 - 日期格式為"Monday May 24, 2010"逗號

..... 521647,1 ,,,“NEAC分工作組會議 - 升級勞動力技能並加強職業技術培訓 - 2010年5月24日星期一下午2:30”,lee.keesung @ gmail.com ,.....

如何在沒有特定組中的雙引號的情況下將逗號與逗號一起抓取(第19組)

你提到:

基本上,日志中的信息用逗號分隔...如果逗號是字段的一部分,則字段將被雙引號。

這使它成為一個CSV文件。 解析CSV文件是一個已解決的問題,您無需重新發明輪子。 使用語言庫提供的CSV解析器。

如果您使用的是Perl,請查看Text :: CSV模塊。

您提供的行似乎是CSV格式。 為什么不使用CSV解析器解析它,例如:

對於java使用Apache commons:

http://commons.apache.org/sandbox/csv/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM