正则表达式,用于从HTML元素捕获令牌

时间:2019-05-25 02:13:13

标签: python regex regex-lookarounds regex-group regex-greedy

所以我试图从html对象中获取值。我已经找到了如何获得价值的方法,但是我不想添加一些额外的东西。

我尝试使用.split()和组,但是这些都没有做任何事情。

html = r.text
checkouttoken = re.search('DF_CHECKOUT_TOKEN = (.*?);', html, re.S)

print(checkouttoken.group(0))

预期:

27f37949bb8a76ede81508c8c1b750c8

实际:

< iframe srcdoc="&lt;script&gt;!function(){var e=function(e){var t={exports:{}};return e.call(t.exports,t,t.exports),t.exports},r=function(){fun
DF_CHECKOUT_TOKEN = "27f37949bb8a76ede81508c8c1b750c8";

2 个答案:

答案 0 :(得分:1)

执行group(1)group(0)是所有匹配的文本,group(1)是您捕获的第一组。

此外,如果您不希望结果中出现引号,则需要将引号添加到正则表达式中,位于捕获组之外:'DF_CHECKOUT_TOKEN = "(.*?)";'

答案 1 :(得分:1)

我们在这里可能想要的表达式可以很简单:

import * as React from 'react';
import { mount } from 'enzyme';

const Component = () => (<div><div className="type"></div></div>);

test('test component elements render', () => {
  const wrapper = mount(<Component />);
  expect(wrapper.find('.link')).toHaveLength(0);  // Success!
  expect(wrapper.find('.type')).toHaveLength(1);  // Success!
});

测试

DF_CHECKOUT_TOKEN = \"(.+?)\"

Demo