簡體   English   中英

Python 正則表達式如何找到匹配的(子)字符串出現次數?

[英]Python regex how do I find matching number of occurrences of a (sub)string?

我需要一個可以歸結為這樣的結構:“(子字符串)a 至少出現 1 次,然后是(子字符串)b 的出現次數相同”。 所以“ab”、“aaabbb”和“aaaaabbbb”被接受,“aab”或“aaabbbb”不被接受。

我發現如果出現次數是固定的(比如 5),我可以使用re.compile("a{5}b{5}") ,但我不知道出現次數。 我只需要他們平等。 我試過re.compile("a{x}b{x}")但我猜那是一廂情願的想法。

內置的re不支持所有格量詞/原子組,不支持遞歸,也不支持平衡組,所有這些功能都可以幫助您構建此模式。

因此,最簡單的解決方案是使用pip install regex ,然后使用我們如何匹配 a^nb^n? 解決方案。

否則,輸入一些 Python 代碼和一個簡單(a+)(b+)正則表達式:

import re
texts = [ "ab", "aaabbb", "aaaaabbbbb", "aab", "aaabbbb" ]
for text in texts:
    match = re.fullmatch(r'(a+)(b+)', text)
    if len(match.group(1)) == len(match.group(2)):
        print( text, '- MATCH' )
    else:
        print( text, '- NO MATCH' )

看到這個演示產生

ab - MATCH
aaabbb - MATCH
aaaaabbbbb - MATCH
aab - NO MATCH
aaabbbb - NO MATCH

筆記:

  • re.fullmatch(r'(a+)(b+)', text)匹配僅包含一個或多個a s 和一個或多個b s 的整個字符串
  • if len(match.group(1)) == len(match.group(2)):正在檢查a s 和b s 的長度,並且只傳遞它們的計數相等的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM