Python正则表达式匹配无法匹配*
需要帮助理解以下示例Python正则表达式匹配无法匹配*,python,regex,Python,Regex,需要帮助理解以下示例 >>> re.search('*.script', 'a.script') Traceback (most recent call last): <snipped> re.error: nothing to repeat at position 0 >>> re.search('\*.script', 'a.script') >>> re.search('a.script', 'a.script') <
>>> re.search('*.script', 'a.script')
Traceback (most recent call last):
<snipped>
re.error: nothing to repeat at position 0
>>> re.search('\*.script', 'a.script')
>>> re.search('a.script', 'a.script')
<re.Match object; span=(0, 8), match='a.script'>
>>> re.search(r'\*.script', 'a.script')
>>> re.search(r'\\*.script', 'a.script')
<re.Match object; span=(1, 8), match='.script'>
>>> re.search(r'\\\\*.script', 'a.script')
>>> re.search(r'\\\*.script', 'a.script')
>>> re.search('\\*.script', 'a.script')
>>>
>>重新搜索('*.script',a.script')
回溯(最近一次呼叫最后一次):
re.error:在位置0处没有要重复的内容
>>>重新搜索('\*.script',a.script')
>>>重新搜索('a.script','a.script')
>>>重新搜索(r'\*.script',a.script')
>>>重新搜索(r'\\*.script',a.script')
>>>重新搜索(r'\\*.script',a.script')
>>>重新搜索(r'\\*.script',a.script')
>>>重新搜索('\\*.script',a.script')
>>>
当我逃离*时,没有对手。当我转义两次时,只有。脚本匹配。如何将*.script
用作正则表达式并匹配完整字符串a.script
?尝试以下模式:r.*\.script
。(它将匹配以.script
结尾的任何内容)
如果要匹配字符
,则需要转义
。如果你不逃逸它,你将匹配任何字符<代码>在正则表达式中具有特殊含义
要使用搜索获得所需内容,只需使用[]
索引即可:
re.search(r'.*\.script','a.script')[0]
re.search(r'\\*\.script','a.script')
我们如何获得完全匹配的a.script
?另外,我如何强制它从字符串的开头到结尾匹配?当我使用^character时,它不会强制它从一开始就匹配<代码>重新搜索(r“\\*\.script$”,'a.script')
重新搜索(r“^\\\\\.script$”,'a.script')
令人惊讶的是,$
工作正常。我的正则表达式中有一个错误。。。我误解了你的问题<代码>\\*
是您需要匹配的*
。。。但是如果你想匹配任何数量的字符,你可以通过*
来实现。检查我所做的编辑以强制匹配整个字符串:re.search(r“^.*\.script$”,“a.script”)