我需要先匹配未解析的部分,所以我创建了应该抓住它们的正则表达式:
(?<inlinecode>!?\{\{\{(?<inline>.*?)\}\}\})|(?<inlinecode2>!?`(?<inline2>.*?)`)|(?<definition>^\s+((?:`[^`]*`|\{\{\{(?:}{,2}[^}])*?\}\}\}|[^`{:]|:[^:])+::)(?:\s+|$))
此部分匹配:
`test`
{{{test}}}
`{{{test`
{{{``test}}}
但这不是(也应该):
{{{
test
}}}
{{{#!xxx
test
}}}
def::
some def
我错过了什么。 RegEx几乎与trac在内部使用相同。
答案 0 :(得分:1)
你的正则表达式是正确的。您应该启用“dot matches linebreak”修饰符,或者将此(?:.|[\r\n])
设置为.
(点)。 试试这个:
(?<inlinecode>!?\{\{\{(?<inline>(?:.|[\r\n])*?)\}\}\})|(?<inlinecode2>!?`(?<inline2>(?:.|[\r\n])*?)`)|(?<definition>^\s+((?:`[^`]*`|\{\{\{(?:}{,2}[^}])*?\}\}\}|[^`{:]|:[^:])+::)(?:\s+|$))
干杯。