我需要分割此字符串:

COMITATO: TRIESTE Indirizzo legale: VIA REVOLTELLA 39 34139
Trieste (Trieste) Mob.: 3484503368 Fax: 040310096 Sito web: www.csentrieste.it/


所需的结果必须是类似以下的数组:

{COMITATO:,TRIESTE,Indirizzo legale:,VIA REVOLTELLA 39 34139
Trieste (Trieste) ,Mob.:,3484503368,Fax:,Sito web:,www.csentrieste.it/}


问题还在于字符串的某些属性可能会丢失,因此我无法使用“ COMITATO:”或“ Indirizzo legale:”之类的属性标题进行拆分

示例:如果“ Indirizzo legale:”,其缺少的字符串将显示为:

COMITATO: TRIESTE Mob.: 3484503368 Fax: 040310096 Sito web: www.csentrieste.it/

最佳答案

好吧,此正则表达式将解析您的给定输入:

(?<firstname>.*?):\s*(?<lastname>\w+)(?:(?<occupation>[^:]+):\s*(?<address>.+\n.+))?\sMob.:\s*(?<mobile>\d+)\s*Fax:\s*(?<fax>\d+)\s*Sito web:\s*(?<website>.*)


通过使用命名组,我们可以挽救一些可读性并易于访问结果。对于正则表达式并不太聪明,我们只是使用可固定模式的静态结构在字符串中爬行:冒号,“ Mob”,“ Fax”和“ Sito web”。显然,“可能丢失”地址部分是可选的。

regex demo here

09-17 16:07