我有一些字符串格式的JavaScript代码。目标就是这样一个字符串:
productPage.loadProductData("138674", "initial", "1");
如何提取'138674'?
我正在使用这一行:
from re import search as re_search, sub as re_sub, compile as re_compile
print re_search(r'productPage.loadProductData("?P<pid>\d+","?P<x>\w+","?P<n>\d+");', open_link).groupdict()["pid"]
答案 0 :(得分:1)
在Python (?P<name>regex)
中称为命名捕获组。您忘记了命名捕获组中的左右括号。此外,您还需要在正则表达式中转义(
以匹配文字(
符号。
>>> s = 'productPage.loadProductData("138674","initial","1");'
>>> print re.search(r'productPage.loadProductData\("(?P<pid>\d+)","(?P<x>\w+)","(?P<n>\d+)"\);', s).group("pid")
138674
OR
>>> print re.search(r'productPage.loadProductData\("(?P<pid>\d+)","(?P<x>\w+)","(?P<n>\d+)"\);', s).groupdict()["pid"]
138674
答案 1 :(得分:0)
除了基于正则表达式的方法,您可以使用slimit
JavaScript parser:
from slimit.ast import String
from slimit.parser import Parser
from slimit.visitors import nodevisitor
data = 'productPage.loadProductData("138674","initial","1");'
parser = Parser()
tree = parser.parse(data)
print next(node.value for node in nodevisitor.visit(tree) if isinstance(node, String))
这会从String
变量的JavaScript代码中输出第一个data
节点。
答案 2 :(得分:0)