正则表达式 - 直到第一次出现一个字符串

时间:2012-02-24 23:01:45

标签: c# regex

我已经尝试创建我需要的正则表达式,但即使在半小时后我仍然没有成功。

正则表达式应该是这样的: hey字符串,后跟任意字符(也是新行),以第一个</div>字符串结束。

我已经尝试过这样做但是当我在hey字符串之后允许任何内容时,它变得太贪婪并且返回一个包含hey的匹配以及之后的任何内容,而不是给我多个匹配用</div>完成。

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

这会有用吗?试一试。

。*?意味着任何长度的非贪婪

hey.*?'

答案 1 :(得分:1)

craig1231是正确的,?*使正则表达式非贪婪。我不确定你的意思是什么:

  

第一次出现“”字符串

如果那应该是2个双引号,那么在C#中尝试这样的事情:

try {
    if (Regex.IsMatch(subjectString, "hey.*?\"\"", RegexOptions.Singleline)) {
        // Successful match
    } else {
        // Match attempt failed
    } 
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

RegexOptions.Singleline是必要的,因为您还想捕获换行符等。

答案 2 :(得分:0)

我终于设法创建了所需的正则表达式:

哎((\ S)|。())?*

我的态度有点不对,因为如果我想找到第一次出现的东西,我应该简单地写一下,但是我感谢craig1231让我知道如何懒得做。