我需要从以下电子邮件中提取一部分:
Bestellnummer xxx:
1 von xxx, 1er Pack
------------- Anfang der Nachricht -------------
foo bar baz foo bar baz // <<<<< I need this text here
------------- Ende der Nachricht -------------
------------- Anfang der Nachricht -------------
foo bar baz foo bar baz
------------- Ende der Nachricht -------------
出现 0 到无限次
------------- Anfang der Nachricht -------------
------------- Ende der Nachricht -------------
我可以使用这个正则表达式提取第一部分:
$re = "/------------- .*? -------------.?(.*?).?------------- .*? -------------/s";
但是,由于我对学习正则表达式还很陌生,我很确定必须有一个更好的正则表达式来提取
之间的文本的这部分 (foo bar baz foo bar baz)------------- Anfang der Nachricht -------------
------------- Ende der Nachricht -------------
由于这可以采用不同的语言,因此我使用
.?
匹配这些连字符之间的所有内容。
无论出现多少次,我都需要该文本的第一次出现。这个正则表达式有更可靠的解决方案吗?
这是一个
demo at regex101.com
最佳答案
我最终得到:$regexp = '/Nachricht\s-+\s+(.*?)\s++-+\sEnde/s';
因此,它节省了一些匹配步骤并对消息进行了一些修剪。
更可靠的正则表达式..它确实有效。为了安全起见,编写一个测试。
\s
- 匹配空格-+
- 匹配一个或多个-
字符\s+
- 匹配一个或多个空格;在消息之前/之后修剪消息(.*?)
- 用于消息
关于php - 找到一个正则表达式来包含电子邮件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30835745/