我对python正则表达式很陌生。 我无法清楚地了解如何在句子中搜索" *",因为*在正则表达式中用作关键字 我感到困惑。 我的问题是,我有一个文件:
*CHI: <that guy was> [//] that bunny was going to [: gonna] take that
balloon !
%mor: pro:dem|that n|bunny aux|be&PAST&13S part|go-PRESP
part|go-PRESP~inf|to v|take pro:dem|that n|balloon !
所以在这里,我必须检索"*CHI :"和"%mor"之间的句子
我想要的输出应该是
<that guy was> [//] that bunny was going to [: gonna] take that
balloon !
您可以使用re.DOTALL
标志使.
匹配换行符; 无需四处查找:
import re
s = '''*CHI: <that guy was> [//] that bunny was going to [: gonna] take that
balloon !
%mor: pro:dem|that n|bunny aux|be&PAST&13S part|go-PRESP
part|go-PRESP~inf|to v|take pro:dem|that n|balloon !
'''
print(re.search(r'*CHI: (.+)n%mor:', s, re.DOTALL)[1])
输出:
<that guy was> [//] that bunny was going to [: gonna] take that
balloon !
试试看
转义"*"字符:
re.findall(r'(?<=*CHI:)[sS]*(?=%mor:)', s)
正面的"?<="和正面的展望"?="将修剪你的开始和结束术语。 [\s\S] 将处理换行符。
你可以把 * 放在 [] 里面。在字符类 [] 中,像 *
这样的元字符被剥夺了特殊含义。
['*']
使用重新搜索
t = """*CHI: <that guy was> [//] that bunny was going to [: gonna] take that
balloon !
%mor: pro:dem|that n|bunny aux|be&PAST&13S part|go-PRESP
part|go-PRESP~inf|to v|take pro:dem|that n|balloon !
"""
mo = re.search(r'[*]CHI:s+(.*)s+%mor:', t, re.S)
mo.group(1)
'<that guy was> [//] that bunny was going to [: gonna] take thatn balloon !'
与 re.findall
re.findall(r'[*]CHI:s+(.*)s+%', t,re.S)
['<that guy was> [//] that bunny was going to [: gonna] take thatn balloon !']