首页 文章

.NET RegEx帮助

提问于
浏览
2

在正则表达式方面我很缺乏经验 . 我想要做的是遍历一个字符串列表,并尝试找到具有某种模式的字符串 . 我感兴趣的字符串将采用_385826的形式_如何编写RegEx以匹配?我在尝试这个:

Regex expression = new Regex("***");

但这给了我一个错误 . parsing "***" - Quantifier {x,y} following nothing.

有人能指出我正确的方向吗?

我正在尝试遍历选择列表选项并将css类添加到相关的选项中 .

Regex expression = new Regex("***");
foreach (ListItem li in listItemCollection)
{
    if (expression.IsMatch(li.Value))
        li.Attributes.Add("class", "highlight1");
}

但这显然不起作用 .

任何帮助表示赞赏,〜在圣地亚哥

6 回答

  • 3

    如果您要做的只是匹配三个星号,为什么不使用string.Contains方法而不是正则表达式呢?

    foreach (ListItem li in listItemCollection)
    {
        if (li.Value.Contains("***"))
            li.Attributes.Add("class", "highlight1");
    }
    
  • 0

    如果您要测试正则表达式,请获取测试应用程序 . Any of these将是一个良好的开端 . 我已经很长时间了Chris Sells's tester,但那里有很多 .

  • 0

    您需要转义星号,因为它是RegExp中的有效元字符 .

    Regex expression = new Regex(@"\*\*\*");
    
  • 3

    你应该试试这个正则表达式模式

    \*{3}\{[^\}]*}\*{3}
    

    这会找到 ***{some text}***

    如果你想在*之前的文本,你应该使用这个

    ^[\w\s]*\*{3}\{[^\}]*\}\*{3}
    
    • ^ - 输入的开头

    • [\w\s]* a-z,A-Z,0-9,_和空格中的任何字符,0次或更多次

    • \*{3} 三个星号

    • \{ 匹配 {

    • [^\}]* 除了 } 0次或更多次以外的任何字符

    • \} 匹配 }

    • \*{3} 匹配三个星号

  • 2

    尝试这样的事情:

    \*\*\*[^\*]+\*\*\*
    
  • 9

    *在正则表达式中具有特殊含义 .

    如果您想匹配3个星号,请尝试

    Regex expression = new Regex(@"\*\*\*");
    

    EDIT:

    如果您只是想验证字符串是否包含"***",请查看bdukes' answer .

相关问题