我今晚很懒,不想弄明白这个.我需要一个正则表达式来匹配以下输入中的'jeremy.miller'和'scottgu':
http://codebetter.com/blogs/jeremy.miller/archive/2009/08/26/talking-about-storyteller-and-executable-requirements-on-elegant-code.aspx
http://weblogs.asp.net/scottgu/archive/2009/08/25/clean-web-config-files-vs-2010-and-net-4-0-series.aspx
Run Code Online (Sandbox Code Playgroud)
想法?
Chris Lutz在满足上述要求方面做得很好.如果这些是输入怎么办,那么你就不能在正则表达式中使用'archive'了?
http://codebetter.com/blogs/jeremy.miller/
http://weblogs.asp.net/scottgu/
Run Code Online (Sandbox Code Playgroud)
这会是你想要的吗?
'/([^/]+)/archive/'
Run Code Online (Sandbox Code Playgroud)
在两种情况下,在"归档"之前捕获该块.根据正则表达式的味道,你需要逃避/它才能使它工作.作为替代方案,如果您不想匹配该archive部件,您可以使用前瞻,但我不喜欢前瞻,并且更容易匹配很多并且只捕获您需要的部分(在我看来),所以如果您更喜欢使用前瞻来验证下一部分是什么archive,您可以自己编写一个.
编辑:当你更新你的问题时,我对你想要的东西的想法变得模糊不清.如果你想要一个新的正则表达式匹配第二种情况,你可以使用与/以前相同的条件从最后采摘相应的部分:
'/([^/]+)/$'
Run Code Online (Sandbox Code Playgroud)
如果您特别想要文本,jeremy.miller或者scottgu无论它们出现在URL中的哪个位置,而只是作为URL中的"单词"(即不是scottgu2),请尝试这一点,再次提出/警告:
'/(jeremy\.miller|scottgu)/'
Run Code Online (Sandbox Code Playgroud)
作为第三种选择,如果你想在域名之后使用该字段,除非该字段是"博客",否则它会变得毛茸茸,特别是/需要注意的是:
'http://[^/]+/(?:blogs/)?([^/]+)/'
Run Code Online (Sandbox Code Playgroud)
这将匹配域名,可选blogs字段,然后匹配所需字段.该(?:)语法是一个非获取组,这意味着它就像普通的括号,但不会捕捉价值,所以拍摄的唯一的价值是你想要的值.(?:)根据您的特定正则表达风味而有变化的风险.我不知道你要求的是什么语言,但我主要使用Perl,所以如果你使用PCRE,那么这个正则表达式应该很多.如果您使用不同的东西,请查看非捕获组.
哇.这是很多关于正则表达式的讨论.我需要闭嘴发帖.