我正在尝试从以下文本中捕获地址数据。
<address>
Firstname Lastname<br />
Address 1<br />
ZIP City<br />
Country</address>
我尝试过的正则表达式是(?<=>)(.*)(?=<\Q/\Eaddress)
由于某种原因,它无法捕获任何东西。
我对regex完全陌生,所以我真的什么都不懂。我只知道,我发现以下正则表达式捕获
之间的数据(?<="from here")(.*)(?="to here")
我也能够逃脱斜线。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
尽管您应该避免使用正则表达式来解析HTML,但是由于您的情况似乎是标记的简单非嵌套情况,因此您可以使用以下正则表达式捕获标记之间的所有数据,并捕获组1中的数据。
(?s)<address>(.*?)<\/address>
由于您的数据似乎出现在多行中,因此您需要在正则表达式中使用(?s)标志,该标志使点可以匹配新的行字符。
而且,在您自己的正则表达式中,您只需进行少许校正并使用(?s)标志(如上文所述)即可使其工作。您的正则表达式版本可以像这样更正和使用,
(?s)(?<=>)(.*?)(?=<\/address)
(用/
转义\
)
OR
(?s)(?<=>)(.*?)(?=<\Q/\Eaddress)
(无需转义/如果将其放在\ Q和\ E之间)