【问题标题】:Regex to specify exactly one occurrence of the matched content正则表达式精确指定匹配内容的一次出现
【发布时间】:2020-10-25 20:19:29
【问题描述】:

我正在尝试构建一些正则表达式以匹配 html 页面中的 div 类。看看这个例子:

<div class="ba bb bc bd be">

<div class="ba bb">

我需要的是一个正则表达式来获得第二类(ba bb),所以包括中间空格在内的五个字符。我试过了

[a-z]{4}

但它不起作用。我不知道该怎么做。

编辑 1:我使用网站 https://regexr.com/ 来测试我提供的文本。

使用正则表达式

[a-z]{2} [a-z]{2}

还有

[a-z]{2}\s[a-z]{2}

我得到 iv class="ba bb bc bd be">

但我只需要一个匹配第二个,所以这个正则表达式匹配的比我需要的多。

使用正则表达式

'"([a-z]{2}) \1"'

它不匹配任何东西。我需要指定我不能使用双引号字符,因为我需要在 BeautifulSoup 中使用这个正则表达式,以便从源中删除字符类型。

【问题讨论】:

  • 关于:[a-z ]{2} [a-z ]{2}
  • 它不像我预期的那样工作

标签: python html regex beautifulsoup


【解决方案1】:

这个正则表达式应该可以帮助你:

[a-z]{2}\s[a-z]{2} #4 alphabets in total, 2 on the left, 2 on the right, separated by a space

【讨论】:

    【解决方案2】:

    你应该首先定义双字母组,然后告诉你有多少这样的组。也许这会有所帮助:

    '\"([a-z]{2}) \1\"'
    

    【讨论】:

      【解决方案3】:

      试试这个,用引号分隔符

      "[a-z ]{2} [a-z ]{2}"
      

      【讨论】:

      • @docdev 试试这个,带引号分隔符。
      【解决方案4】:

      试试

      (?<=class=\")[a-z ]{5}(?=\")
      

      如果值的大小恰好为 5,则在类属性中匹配值(检查此链接 https://regex101.com/r/vRS42u/1

      但如果您确实需要匹配 2 个字母,那么 1 个空格和 2 个字母也许这种模式可以帮助您

      (?<=class=\")[a-z]{2} [a-z]{2}(?=\")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-18
        • 2022-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-28
        • 2012-03-13
        相关资源
        最近更新 更多