【问题标题】:.Net Regular Expression(Regex).Net 正则表达式(正则表达式)
【发布时间】:2016-12-05 12:01:31
【问题描述】:

VB.NET 使用正则表达式拆分字符串? 我对模式字符串变量有逻辑错误,在我将字符串从“(-)”扩展到“(-)(+)(/)(*)”之后发生错误..

  Dim input As String = txtInput.Text
    Dim pattern As String = "(-)(+)(/)(*)"

    Dim substrings() As String = Regex.Split(input, pattern)
    For Each match As String In substrings
        lstOutput.Items.Add(match)

当我的模式字符串变量为“-”时,这是我的输出,它工作正常

input: dog-
output: dog 
        -

我想要的输出(这是我想要发生的事情)但代码有问题..在我执行此操作后出现错误“(-)(+)(/)()”甚至这 "(-)" + "(+)" + "(/)" + "()"

input: dog+cat/tree
output: dog
    +
    cat
    /
    tree

当空格字符从文本框输入到列表框时

input: dog+cat/ tree
output: dog
+
cat
/



tree

【问题讨论】:

    标签: regex vb.net string variables split


    【解决方案1】:

    您需要一个字符类,而不是单独捕获组内的子模式序列:

    Dim pattern As String = "([+/*-])"
    

    此模式将匹配并捕获到第 1 组(因此,所有捕获的值都将成为结果数组的一部分)一个字符,它是 +/、@ 987654327@ 或-。注意连字符的位置:因为它是字符类中的最后一个字符,所以它被视为文字-,而不是范围运算符。

    regex demo

    【讨论】:

    • Wiktor 感谢它的工作,但如果空格字符怎么办?我确实在括号内添加了 1 个空格字符,但输出使空格在 3 个空格中太远了...
    • 在开头加一个空格:[ +/*-]——重点是-必须在结尾。
    • 空格字符有效,但空格扩展到 2 个字符空间我认为问题一定出在列表框上.. 请参阅上面的新编辑输出..
    • 如果您需要我帮助,请提供示例字符串和预期输出。请将代码包装在 ` 内的 cmets 中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多