0

我们如何捕获这个可选组?(我的意思是消耗多条线路) 在此处输入图像描述

绿色组->可选组

红线->新段(重复相同的模式)

我的模式:

(\t{2}<idx:entry name="dic">\r\n)(\t{4}<idx:orth>)(.+\r\n)(\t{4}<idx:infl>[^</idx:infl>]+)?

在此处输入图像描述

知道如何捕获这个没有固定长度的可选组吗?

4

2 回答 2

1

尝试这个:

\s*<idx:entry name="dic">\s*<idx:orth>[^<]*\s*(<idx:infl>\s*.*\s*</idx:infl>)

在 XML 中,标签之间的空格会被忽略,因此您不必在正则表达式中指定确切数量的制表符和换行符。仅用于\s表示空格(包括空格、制表符和换行符)。

括号之间的所有内容都()被捕获,您可以使用\1$1根据您的正则表达式引擎访问该组。

但是,在解析 XML 时,通常最好使用像XPath这样的适当 DOM 解析器。

于 2013-07-21T18:30:03.440 回答
0

我发现这对使用多行很有帮助:

[\s\S]*</idx:infl>
于 2013-07-21T21:00:19.170 回答