【问题标题】:regex problem finding tags like html in BeautifulSoup (customizeable)正则表达式问题在 BeautifulSoup 中查找 html 等标签(可自定义)
【发布时间】:2020-10-15 12:41:39
【问题描述】:
>>> l
'{{ftext{{stext}}something}}'
>>> re.findall('{{.*?}}',l)
['{{ftext{{stext}}']

结果与['{{ftext{{stext}}something}}','{{stext}}'] 一样,BeautifulSoup 的 html 解析器的工作原理与此完全相同。但是我不知道定制BeautifulSoup的方式。

【问题讨论】:

    标签: python-3.x regex beautifulsoup


    【解决方案1】:

    您只能使用PyPi regex 模块匹配{{}} 之间的平衡重叠字符串,因为re 不支持递归:

    import regex
    l = '{{ftext{{stext}}something}}'
    print( regex.findall(r'{{(?>(?!{{|}}).|(?R))*}}', l, overlapped=True, flags=regex.S) )
    # => ['{{ftext{{stext}}something}}', '{{stext}}']
    

    online Python demo

    详情

    • {{ - {{ 字符串
    • (?>(?!{{|}}).|(?R))* - 零次或多次重复
      • (?!{{|}}). - 任何不以 {{}} 字符序列开头的字符
      • | - 或
      • (?R) - 整个正则表达式模式递归
    • }} - }} 字符串。

    【讨论】:

    • 如果l var 是一个分段怎么办?如果ftext 的大括号内还有更多类似的内容怎么办?它也可以在那里工作吗?
    • @AbdullahALShohag l 是您提供的字符串。它会工作,你自己测试一下。
    • 技术上我解决了我的问题,但并没有太大帮助。我试图做的事情,我以完全不同的方式做到了。
    猜你喜欢
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多