条件正则表达式模板
Conditional Regex Templating
我想使用正则表达式在我的模板中包含或排除条件文本。
一个简单的模板:
#IF {{Placeholder}}
If true the text should remain, else it should be deleted
#ENDIF
在第一个 运行 中,我用一个简单的 true 或 false 字符串替换了占位符:
#IF false
If true the text should remain, else it should be deleted
#ENDIF
在第二个 运行 上,我使用以下正则表达式应用条件:
Regex.Replace(input, "(?s)#IF false.*?#ENDIF\r\n", "", RegexOptions.Compiled);
如果占位符是 "false",全文块将按预期删除。
现在缺少的是 "true" 条件,一个保留内部文本并仅删除该组的“#IF true”和“#ENDIF”行的正则表达式 :
If true the text should remain, else it should be deleted
有什么想法吗?
给你,假设我在这里所做的是不管#ENDIF 将被删除。如果是真的评论将被删除,如果是假的整个块。所以考虑到这使得一个正则表达式。它满足您的要求。如果为真,则删除评论,如果为假,则删除整个块。
正则表达式:'(?:(?:#IF\s(?:false)\n).*)|(?:#IF true\n)(?<=#IF true\n)|(?:#ENDIF)\n?'
这是示例的 link,其中包含您在此处提供的数据。
https://regex101.com/r/cFy11t/9
只要捕获 IF 和 ENDIF 之间的行,并使用它的值作为替换:
(?s)#IF\s*false.*?#ENDIF|#IF\s*true\R(.+?)\R#ENDIF
我想使用正则表达式在我的模板中包含或排除条件文本。
一个简单的模板:
#IF {{Placeholder}}
If true the text should remain, else it should be deleted
#ENDIF
在第一个 运行 中,我用一个简单的 true 或 false 字符串替换了占位符:
#IF false
If true the text should remain, else it should be deleted
#ENDIF
在第二个 运行 上,我使用以下正则表达式应用条件:
Regex.Replace(input, "(?s)#IF false.*?#ENDIF\r\n", "", RegexOptions.Compiled);
如果占位符是 "false",全文块将按预期删除。
现在缺少的是 "true" 条件,一个保留内部文本并仅删除该组的“#IF true”和“#ENDIF”行的正则表达式 :
If true the text should remain, else it should be deleted
有什么想法吗?
给你,假设我在这里所做的是不管#ENDIF 将被删除。如果是真的评论将被删除,如果是假的整个块。所以考虑到这使得一个正则表达式。它满足您的要求。如果为真,则删除评论,如果为假,则删除整个块。
正则表达式:'(?:(?:#IF\s(?:false)\n).*)|(?:#IF true\n)(?<=#IF true\n)|(?:#ENDIF)\n?'
这是示例的 link,其中包含您在此处提供的数据。 https://regex101.com/r/cFy11t/9
只要捕获 IF 和 ENDIF 之间的行,并使用它的值作为替换:
(?s)#IF\s*false.*?#ENDIF|#IF\s*true\R(.+?)\R#ENDIF