我的问题与this question非常相似,答案几乎没问题。只有我需要一个正则表达式,不仅仅是字符到字符,而是角色的第二次出现。 我的目的是从uri获取密码,例如:
http://mylogin:mypassword@mywebpage.com
所以实际上我需要从第二个“:”到“@”的空间。
答案 0 :(得分:3)
你可以给出以下正则表达式:
(?<=:)[^:]+?(?=@)
它匹配任何不包含任何:
字符的连续字符串,前缀为:
,后缀为@
。
根据您的正则表达式的风格,您可能需要以下内容:
:([^:]+?)@
哪个不使用外观,这包括匹配中的:
和@
,但密码将位于第一个捕获组中。
如果实际的url字符串中应该有任何?
字符,@
会使其变得懒惰,因此它是可选的。请注意,这将匹配:
和@
之间的任何字符甚至换行符,依此类推。
答案 1 :(得分:0)
这是一个不需要先行或后视的简单方法:
.*:.*:([^@]+)@
说明:
.*:.*
:匹配所有内容(包括)第二个冒号(:
)([^@]+)
匹配尽可能长的非@
个字符系列@
- 匹配@
字符。如果你运行这个正则表达式,第一个捕获组(括号之间的表达式)将包含密码。