Regex 需要正则表达式是非贪婪的吗

Regex 需要正则表达式是非贪婪的吗,regex,Regex,问题:如何让正则表达式通配符只在两个最近的元素之间进行选择,而不继续选择其他类似的元素?

 我有一个很长的名字列表,需要用制表符将姓氏与其他名字分开。为了实现这一点,我在每行返回之前插入了一个占位符,并用不同的占位符字符@替换名字中的所有空格,以便我的正则表达式引用。这些名字都是第一个,中间首字母,然后是最后一个,中间首字母两边各有一个空格。因此,在插入占位符字符后,列表如下所示:

 Edward@C.@塞尔纳
 James@J.@梅吉文
 J@Philip@Newell
 
 我只需要在@

问题:如何让正则表达式通配符只在两个最近的元素之间进行选择,而不继续选择其他类似的元素?

 我有一个很长的名字列表,需要用制表符将姓氏与其他名字分开。为了实现这一点,我在每行返回之前插入了一个占位符,并用不同的占位符字符@替换名字中的所有空格,以便我的正则表达式引用。这些名字都是第一个,中间首字母,然后是最后一个,中间首字母两边各有一个空格。因此,在插入占位符字符后,列表如下所示:

 Edward@C.@塞尔纳
 James@J.@梅吉文
 J@Philip@Newell
 
 我只需要在@和占位符之间隔离姓氏。当我尝试这样做时,我的正则表达式将转到第一个@占位符,而不是在姓氏之前的第二个@占位符处停止。以下是我在搜索中使用的内容:
 @[\s\s]*?
 我将用以下内容取代:
 表1美元
 之后,我会将所有占位符转换回其原始状态。
 我应该在这里做些什么不同的事情?
 
 谢谢。

您可以使用

@([^@#]*)#

细节

@-a@char [^@]*-第1组:0个或更多字符,而不是@和 -一个字符。 见: