![](/img/trans.png)
[英]Generate a regex to find sub strings with certain number of occurrences of certain characters
[英]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.