我试图在twitter链接的末尾正则表达式,其中唯一的标识符是类值fl。因此,正则表达式(据我所知)必须包括:
class=\"fl\"
考虑更改中间部分,其中\S+不起作用,然后查找并分组:
data-href="http://www.twitter.com/(newyorklife)
在括号中可以找到组。我试图解析的整个字符串是。你知道吗
<g-link class="fl"><a href="/url?sa=t&rct=j&q=&esrc=s&source=web&cd=32&cad=rja&uact=8&ved=0ahUKEwjknIy87oHWAhXHi1QKHXQdAJsQ9zAIyQEwHw&url=http%3A%2F%2Fwww.twitter.com%2Fnewyorklife&usg=AFQjCNHKcAcw6H6cYG3YH1j4V3UOxX1whw" onmousedown="return rwt(this,'','','','32','AFQjCNHKcAcw6H6cYG3YH1j4V3UOxX1whw','','0ahUKEwjknIy87oHWAhXHi1QKHXQdAJsQ9zAIyQEwHw','','',event)" data-href="http://www.twitter.com/newyorklife"><div jsl="$t t-XNwoAoU5dyo;$x 0;" class="r-iBA3fWkVHWLE"><g-img class="_tek"><img id="uid_4" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAABZUlEQVR4AWLQWfWQpmjUAjxo1IJRC2wBpJTDQkVRFIafKBujZrnGjbNd84wHiJNs27btrm3rrFbW1T73m20u/yMsW0cBg6zue5XCYLFQcC41JK0I3PsYaWvC+BkugYFljrbmWPp/H/86FOnhB2hGZbTg/dBhFoEBhsoEAO23Su9+5s/9nA0R/ANtXEgNJTtiAgObfB28gZaKt8Wen2ZarhRgjVL8nagGmetC+IFMb5lgqOtOZAtsLVgjcIhFZqD+RLYj0IFzGCwUcRctc7XgNNcyA7GBhAW+EWvnHK3XCjqDhg3OUpvAEegFTgAdA+nrwnuF4zCw7DSlwqOPscRxUAmtiYqY5NDXImz/6mPprlAP1sDgcjdFLokdCkPGW6Kstmbhtoim2IWNsRsvFXNsjURvBmvgiMROc11S0+BhVvmhFAUDhewrISgbg4/qlyUdeEnl+sBk7SOgfcBSb3jWaKMWjFoAABKespvtvzYlAAAAAElFTkSuQmCC" data-deferred="1" class="_WCg" height="32" width="32" alt="" onload="typeof google==='object'&&google.aft&&google.aft(this)"></g-img></div>Twitter</a></g-link>
我不知道正则表达式是否有一个方法,或者是否可以跳过整个中间部分,其中包含这么多特殊字符。我一直在玩pythex.org网站一段时间,找不到一个简单地找到初始值然后跳过所有内容的方法,直到。。。指定值。有什么想法吗?你知道吗
编辑。我想要字符串'Newyorklife'作为输出。虽然这是一个不断变化的值,但实际上我只想要后面的\w+推特网站/. 问题是class=fl是网页上行的唯一唯一标识符(twitter和data href在页面的其他地方显示)。你知道吗
否regex needed,请改用合适的解析器:
要选择多个链接,请使用
soup.findAll()
,请参见documentation for more information。你知道吗有一种方法可以在一个regex字符串中完成,但是它会非常难看并且很难阅读。所以我会分两步来解决这个问题。首先捕获类为“fl”的HTML标签,然后在属性中找到Twitter句柄。你知道吗
str = document.documentElement.innerHTML; anchorTag = str.match( "class=\"fl\">([^>]+)" )[1]; matches = anchorTag.match("twitter\.com%2F([^&]+)&"); if( matches != null && matches.length > 1 ){ var handle = matches[1]; } console.log(handle);
; ^{pr2}$ ;这是一个有效的regexp:
这里的关键概念是非贪婪匹配。因为页面上可能有多个
data-href
,所以您必须注意在匹配class="fl"
之后找到它的第一个出现。因此这里使用.*?
表达式来匹配尽可能少的字符,然后再尝试匹配下一个data-href
。你知道吗相关问题 更多 >
编程相关推荐