是不是真的有用于不情愿'?'在正则表达式?

时间:2009-05-29 10:29:15

标签: regex

不情愿的量词可能非常有用。但是,我无法想到使用???这个不情愿的版本。有人可以给我一个例子,还是只是因为其他量词也有不情愿的版本?

3 个答案:

答案 0 :(得分:3)

这是一个使用??量词的正则表达式示例:

(?:\w+-??|-\w+)

它匹配后跟连字符或连字符前面的每个单词。在foo-bar中,它会与foo-bar匹配,而不是foo-bar匹配(?:\w+-?|-\w+)

答案 1 :(得分:1)

一个例子 - 在实践中可能没那么有用,但可以让你知道如何使用它(借口c#语法):

Match username = Regex.Match(input, @"^([\w\W]*?)(@[\w\W]+\.[\w\W])??$");

现在,这将是用户在输入表单中输入他的用户名或电子邮件地址,如果输入了电子邮件地址,则正则表达式仅抓取@之前的部分。这样,不止一种类型的输入就可以了,无论是否提供@domain.com,您仍然可以获得相同的数据。

免责声明:这是我将用于上述目的的正则表达式 - 它与太多非电子邮件地址相匹配。但是,嘿,这是一个演示...;)

答案 2 :(得分:0)

如果你想要一个不同于其他捕获组的东西,也许可能。我不记得曾经看过它,也想不出一个不会做大做法的例子。