正则表达式匹配直到第二次出现不同角色的角色

时间:2014-02-24 10:15:17

标签: regex

我的问题与this question非常相似,答案几乎没问题。只有我需要一个正则表达式,不仅仅是字符到字符,而是角色的第二次出现。 我的目的是从uri获取密码,例如:

http://mylogin:mypassword@mywebpage.com

所以实际上我需要从第二个“:”到“@”的空间。

2 个答案:

答案 0 :(得分:3)

你可以给出以下正则表达式:

(?<=:)[^:]+?(?=@)

它匹配任何不包含任何:字符的连续字符串,前缀为:,后缀为@

根据您的正则表达式的风格,您可能需要以下内容:

:([^:]+?)@

哪个不使用外观,这包括匹配中的:@,但密码将位于第一个捕获组中。

如果实际的url字符串中应该有任何?字符,@会使其变得懒惰,因此它是可选的。请注意,这将匹配:@之间的任何字符甚至换行符,依此类推。

答案 1 :(得分:0)

这是一个不需要先行或后视的简单方法:

.*:.*:([^@]+)@

说明:

  • .*:.*:匹配所有内容(包括)第二个冒号(:
  • ([^@]+)匹配尽可能长的非@个字符系列
  • @ - 匹配@字符。

如果你运行这个正则表达式,第一个捕获组(括号之间的表达式)将包含密码。

这里有效:http://regex101.com/r/fT6rI0