0

下面的文本字符串来自 Integromat 文本解析器。我正在尝试从用户使用内置 Integromat Regex 文本解析器填写的表单中捕获值。

例如,测试字符串的出现(不幸的是,信息没有在单独的行中出现):

Information First Name:Frank Last Name:McTester Email:mctesterxmas@rya.com
Guest Name:Debby McTester Party RegistrationNumber of Dinner Guests:  2 [http://

我需要正则表达式来提取字符串和FRANK之间的信息,依此类推。First Name:Last Name:

我当前的正则表达式非常适用于这些字符串在自己的行中的电子邮件。例如,如果电子邮件中的每个字符串都在其自己的行中,则此正则表达式运行良好。

First Name:\s*(.*)|Last Name:\s*(.*)|Email:\s*(.*)|Guest Name:\s*(.*)|Number of Dinner Guests:\s*(.*)

但是当一切都混在一起时,我无法弄清楚如何使用正则表达式来解析字符串。

4

2 回答 2

1

不要使用替代品,而是按顺序将整行与每个字段匹配。

First Name:\s*(.*?)\s+Last Name:\s*(.*?)\s+Email:\s*(.*)|Guest Name:\s*(.*?)Number of Dinner Guests:\s*(.*)
于 2021-11-12T00:19:37.060 回答
0

如果其他人需要,这是最终的解决方案。

Transaction Date: *(?<date>\S+)|^Information[^:]*:\s*(?<name>.*)Last Name:\s*(?<lastname>.*)Email:(?<email>.*)Guest\n?Name:(?<guestname>.*)|Dinner Guests:\s*(?<guestcount>\d+)

或者

Transaction Date: *(?<date>[^\s\n]+)|^Information[^:]*:\s*(?<name>.*)Last Name:\s*(?<lastname>.*)Email:(?<email>.*)Guest\n?Name:(?<guestname>.*)|Dinner Guests:\s*(?<guestcount>\d+)
于 2021-11-17T21:43:07.317 回答