c# - 如何捕获带缩进的字符串组?

标签 c# regex string

我想将此字符串中的每个 if 结构作为一个单独的结构捕获

if a > b
    do this
    do that
    if a == c
        do this
        do that

我想匹配

if a > b
    do this
    do that

    if a == c
        do this
        do that

到目前为止,我没有在新的 if 结构之间进行分隔

if(\W+\w+)+\n\t

最佳答案

您可以使用这个基于前瞻的正则表达式:

^(\s*if[\s\S]+?)(?=^\s*if|\z)

MULTILINE 模式下。

RegEx Demo

[\s\S]+ 将匹配另外 1 个字符包括换行符(?=^\s*if|\z) 是前瞻性的,它将确保断言当前匹配项旁边是另一个 if block 或输入结束。

关于c# - 如何捕获带缩进的字符串组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32592995/

相关文章:

c# - C# 的 NDIS 中间驱动程序接口(interface)

c# - System.Data.SQLite 有多稳定

c# - WCF 服务最简单的安全方法是什么

c# - 将字符串输出转换为数字值

regex - 如何使用正则表达式捕获科学记数法中的减号?

java - 使用从文本文件中删除所有数字和字母数字字符

python - 如何在 for 循环中针对另一个字符串测试整个字符串中的各个字符?

regex - grep regex 仅在一行上输出多个匹配项

java - 将字符串拆分为 3 部分并转换为 int

Java:由子字符串生成的字符串不被视为硬编码字符串