python 遞迴正則匹配

2022-09-19 08:57:11 字數 938 閱讀 6312

需要提取「發熱(低熱(37.3-38°c)),乏力,腹痛(下腹痛,一側腹痛)」中的「發熱,乏力,腹痛」,即去除括號內的內容(包含括號,括號可能巢狀),好像可以用「平衡組/遞迴匹配」,但不知道怎麼用python實現,用nestedexpr貌似可以實現。

from pyparsing import

nestedexpr

defget_nested_expr(syms):

if not syms.startwiths('('):

syms = '(' + syms + ')'

expr = nestedexpr('

(', ')'

) result =expr.parsestring(syms).aslist()[0]

fin_res =

for res in

result:

ifisinstance(res, list):

continue

fin_res.extend(res.strip(',

').split(','

))

return',

'.join(fin_res)

以下兩種遞迴方案好像也行。

def parse(string):

while true:

output = re.sub(r'(?import

regex

regex.sub(r

'(?!^)((?:[^()]*|(?r))+)

', '', "

發熱(低熱(37.3-38°c)),乏力,腹痛(下腹痛,一側腹痛)

")

如何在python中實現遞迴正規表示式? - 碼客 (oomake.com)

python中遞迴的regex模式 - 問答 - python中文網 (cnpython.com)

字串 遞迴 正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 abaca 匹配,但是與 aa.a 和 ab a 均不匹配 示例1輸入 aaa a a 返...

PHP中的遞迴正則使用說明

之前一篇文章翻譯了perl語言中的遞迴正規表示式.其實不少語言中的正則都是支援遞迴的,例如本文要介紹的php正則遞迴.雖然,工作中最常用的正規表示式都很 正則 只用最基本的語法就能解決85 以上的問題,而且合理有效地使用普通正則來解決複雜問題也是一門技巧與學問 但是高階一點的語法的確有它存的價值,有...

PHP正則之遞迴匹配

正則是否能處理括號配對的正則匹配.比如,對於如下的待匹配的字串 就是乙個括號配對的字串.而對於如下的待匹配字串 則不是乙個括號配對的字串.在以前,這種情況,正則無法處理,最多只能處理固定層數的遞迴,而無法處理無線遞迴的情況 而在perl 5.6以後,引入了乙個新的特性 recursive patte...