我正在尝试对 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”作为输出。虽然这是一个不断变化的值,所以实际上我只想要 twitter.com/之后的\w+ 。问题是 class=fl 是网页上该行的唯一唯一标识符(因为 twitter 和 data-href 显示在页面上的其他位置)。
最佳答案
有一种方法可以在一个正则表达式字符串中完成此操作,但它会很丑并且难以阅读。所以我会分两步来解决这个问题。首先,捕获类为“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);
<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>
关于python - 正则表达式 - 通过改变中间值从 HTML 中获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45987157/