无法使用正则表达式捕获
Can't capture with Regex
我正在尝试从以下文本中获取地址数据。
<address>
Firstname Lastname<br />
Address 1<br />
ZIP City<br />
Country</address>
我试过的正则表达式是(?<=>)(.*)(?=<\Q/\Eaddress)
由于某种原因,它无法捕获任何内容。
我对正则表达式完全陌生,所以我真的什么都不懂。我只知道我发现的以下正则表达式捕获
之间的数据
(?<="from here")(.*)(?="to here")
我也逃脱了斜杠。
任何帮助将不胜感激。谢谢!
虽然您应该避免使用正则表达式解析 HTML,但由于您的案例似乎是一个简单的非嵌套标签案例,您可以使用以下正则表达式捕获标签之间的所有数据并捕获第 1 组中的数据,
(?s)<address>(.*?)<\/address>
由于您的数据似乎出现在多行中,因此您需要在正则表达式中添加 (?s) 标志,使点能够匹配新行字符。
并且,在您自己的正则表达式中,您几乎不需要更正并使用 (?s) 标志,就像我上面描述的那样,使其工作。您的正则表达式版本可以像这样更正和使用,
(?s)(?<=>)(.*?)(?=<\/address)
(用 \
转义 /
)
或
(?s)(?<=>)(.*?)(?=<\Q/\Eaddress)
(不需要转义/如果放在\Q和\E之间)
我正在尝试从以下文本中获取地址数据。
<address>
Firstname Lastname<br />
Address 1<br />
ZIP City<br />
Country</address>
我试过的正则表达式是(?<=>)(.*)(?=<\Q/\Eaddress)
由于某种原因,它无法捕获任何内容。
我对正则表达式完全陌生,所以我真的什么都不懂。我只知道我发现的以下正则表达式捕获
之间的数据(?<="from here")(.*)(?="to here")
我也逃脱了斜杠。
任何帮助将不胜感激。谢谢!
虽然您应该避免使用正则表达式解析 HTML,但由于您的案例似乎是一个简单的非嵌套标签案例,您可以使用以下正则表达式捕获标签之间的所有数据并捕获第 1 组中的数据,
(?s)<address>(.*?)<\/address>
由于您的数据似乎出现在多行中,因此您需要在正则表达式中添加 (?s) 标志,使点能够匹配新行字符。
并且,在您自己的正则表达式中,您几乎不需要更正并使用 (?s) 标志,就像我上面描述的那样,使其工作。您的正则表达式版本可以像这样更正和使用,
(?s)(?<=>)(.*?)(?=<\/address)
(用 \
转义 /
)
或
(?s)(?<=>)(.*?)(?=<\Q/\Eaddress)
(不需要转义/如果放在\Q和\E之间)