1(2),3,4(5,6(7,8),9),10的正则表达式

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:07:35

序言:

输入字符串:1(2),3,4(5,6(7,8),9),10

我正在使用C#,我希望最终从上面的表达式中获得List<foo>

public class foo
{
    public int bar { get; set; }
    public List<foo> listOfFoo { get; set; }
}

我可以通过编写一些验证和逐字符解析来完成任务,但我想知道更好的方法。他们说,代码越小,bug就越少;(

查询

我正在寻找一个正则表达式,用于验证并可能捕获字符串中的信息,如

1(2),3,4(5,6(7,8),9),10

字符串基本上是一组用逗号分隔的数字。但是,使用括号( ) ,一个数字可以有一些子表达式

我想从字符串中获取一个类似的图形

1
    2
3
4
    5
    6
        7
        8
    9
10

我对reg-ex知之甚少。我能阅读&理解其中的大多数,但写一篇我觉得很难的

正在找人告诉我,使用RegEx是否可以实现这样的事情。如果是,应该采取什么方法?我可以看出,我需要一个递归表达式,任何链接或示例都会有很大帮助。有人愿意给我RegEx本身就是锦上添花:(

1(2),3,4(5,6(7,8),9),10的正则表达式

.NET正则表达式具有平衡组,允许您像本例中那样计算和匹配平衡括号。

为此,你可以使用这样的表达式:

(?x)                 # ignore spaces and comments
^
(?:
    (?<open> '( )*   # open++
    'd+
    (?<-open> ') )*  # open--
    (?:
        , (?!'z)     # match a , but not at end of string
    |   'z           # or end of string
    )
)+
'z
(?(open) (?!) )      # fail if unbalanced (open > 0)

这将验证但不会解析字符串。我相信,要像你想要的那样构建一棵树,你必须使用解析器。