正则表达式在段落中找到第一个出现的事件

时间:2014-03-18 09:41:29

标签: c# .net regex

我有一个类似的模式 " 你好,我是X和我的父亲的名字是Y.我的爱好正在等等。"。

我的目标是匹配模式" 你好,我是X和我的"。

我尝试使用正则表达式,但总是选择第二个"我的"。

即"你好,我是X和我父亲的名字是Y.我的"

我的正则表达式为(Hello)(.*)(My?)

我也试过了(Hello)(.*)(My?{0})。但仍然没有工作。

你可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

您需要使*量词 lazy

(Hello)(.*?)(My)

.*?将匹配尽可能少的字符(与尽可能匹配的.*相对)。

答案 1 :(得分:1)

使用非贪婪的方法尝试这个正则表达式。

(Hello.*?My)

答案 2 :(得分:0)

试试这个

Hello(.*?)(?=My)(\w{2})

你有一只贪婪的恐龙,但?会让它成为一只懒惰的恐龙

这是一个糟糕的恐龙,他会吃掉所有东西  。*和。+只是这样 它会吃掉贪婪的一切

糟糕的贪婪dino会吃掉所有东西,然后尝试匹配它会尝试搜索My但是他找不到它,因为他已经吃掉了它们。所以,他慢慢地开始呕吐这些字母......慢慢地......除非他找到y然后M。所以它匹配你的字符串中的最后一个。

当我们使它变得懒惰时,他不会吃掉完整的字符串,并且会满足于找到第一个My。他会吃掉它然后去睡觉。)