QRegularExpression multiline与换行符不匹配

时间:2013-10-11 09:19:04

标签: regex qt

我需要匹配文本--BB0和--EE0之间的两行,所以我在QT中使用这个正则表达式:

QRegularExpression rx0("(--BB0\n)(.*)(\n.*--EE0)", QRegularExpression::MultilineOption | QRegularExpression::DotMatchesEverythingOption)

此正则表达式在这种情况下正确匹配

QRegularExpressionMatch match = rx0.match("    --BB0\n    AAAA\n    BBBB\n    --EE0");

但是当我匹配

的实际字符串时,它找不到任何内容
--BB0
signal our_ip_address      : std_logic_vector (31 downto 0)  :=   x"c0a80509" ;   -- 192.168.5.9
signal our_mac_address     : std_logic_vector (47 downto 0)  :=   x"002320212223";
--EE0

我在哪里做错了?

由于

1 个答案:

答案 0 :(得分:4)

您不需要所有这些,只需使用以下表达式:

--BB0(.*?)--EE0

并使用QRegularExpression::DotMatchesEverythingOption,您不需要QRegularExpression::MultilineOption,因为您在正则表达式中没有使用^$

比赛将在第1组中进行。

Regex101 Demo