我们如何捕获这个可选组?(我的意思是消耗多条线路)
绿色组->可选组
红线->新段(重复相同的模式)
我的模式:
(\t{2}<idx:entry name="dic">\r\n)(\t{4}<idx:orth>)(.+\r\n)(\t{4}<idx:infl>[^</idx:infl>]+)?
知道如何捕获这个没有固定长度的可选组吗?
我们如何捕获这个可选组?(我的意思是消耗多条线路)
绿色组->可选组
红线->新段(重复相同的模式)
我的模式:
(\t{2}<idx:entry name="dic">\r\n)(\t{4}<idx:orth>)(.+\r\n)(\t{4}<idx:infl>[^</idx:infl>]+)?
知道如何捕获这个没有固定长度的可选组吗?
尝试这个:
\s*<idx:entry name="dic">\s*<idx:orth>[^<]*\s*(<idx:infl>\s*.*\s*</idx:infl>)
在 XML 中,标签之间的空格会被忽略,因此您不必在正则表达式中指定确切数量的制表符和换行符。仅用于\s
表示空格(包括空格、制表符和换行符)。
括号之间的所有内容都()
被捕获,您可以使用\1
或$1
根据您的正则表达式引擎访问该组。
但是,在解析 XML 时,通常最好使用像XPath这样的适当 DOM 解析器。
我发现这对使用多行很有帮助:
[\s\S]*</idx:infl>