我们如何捕获这个可选组? (我的意思是消耗多行)
绿色组 - >可选组
红线 - >新细分(相同的模式重复)
我的模式:
(\t{2}<idx:entry name="dic">\r\n)(\t{4}<idx:orth>)(.+\r\n)(\t{4}<idx:infl>[^</idx:infl>]+)?
任何想法如何捕获这个没有固定长度的可选组?
答案 0 :(得分:1)
试试这个:
\s*<idx:entry name="dic">\s*<idx:orth>[^<]*\s*(<idx:infl>\s*.*\s*</idx:infl>)
XML中忽略标记之间的空格,因此您不必在正则表达式中指定标签和换行符的确切数量。只需使用\s
来表示空格(包括空格,制表符和换行符)。
抓取了()
之间的所有内容,您可以使用\1
或$1
访问此论坛,具体取决于您的正则表达式引擎。
但是,在解析XML时,使用正确的DOM解析器(如 XPath )通常会更好。
答案 1 :(得分:0)
我发现这有助于消费多行:
[\s\S]*</idx:infl>