Python:Regex查找但不包括字母数字

Python:Regex查找但不包括字母数字,python,regex,Python,Regex,是否有正则表达式可供查找,例如,>ab“”,但结果中不包含“>” 我想用re.sub替换一些字符串,并且我想查找以“>”开头的字符串,而不删除“>”您想要一个肯定的lookbehind断言。看 r'(?)ab' 它必须是固定长度的表达式,不能是可变字符数。基本上是这样 r'(?<=stringiwanttobebeforethematch)stringiwanttomatch' r'(?)在它前面 #这里我们有ab,所以我们会得到ecd 打印参考文件(r'(?)ab','e','>ab

是否有正则表达式可供查找,例如,
>ab“
”,但结果中不包含
“>”


我想用
re.sub
替换一些字符串,并且我想查找以
“>”
开头的字符串,而不删除
“>”

您想要一个肯定的lookbehind断言。看

r'(?)ab'
它必须是固定长度的表达式,不能是可变字符数。基本上是这样

r'(?<=stringiwanttobebeforethematch)stringiwanttomatch'
r'(?)在它前面
#这里我们有ab,所以我们会得到ecd
打印参考文件(r'(?)ab','e','>abcd')
#这里有'ab'但没有'>',所以我们得到'abcd'
打印子标题(r'(?)ab',e',abcd')

您可以在sub:

import re
test = """
>word
>word2
don't replace
"""
print re.sub('(>).*', r'\1replace!', test)
产出:

>replace!
>replace!
don't replace

当您说“我想用
re.sub
替换一些字符串,并且我想查找以“
”开头的字符串,而不删除“
”时,我相信这就满足了您的实际需要。”

如果您想避免使用re模块,也可以使用string方法

>>> foo = [ '>12', '>54', '34' ]
>>> for line in foo:
...     if line.startswith('>'):
...             line = line.strip('>')
...     print line
... 
12
54
34
>>> 

他想
查找以“>”开头的字符串,而不删除“>”
。您的版本删除了
,我想我不明白。当我键入
r'(?asdf)sd'
时,我得到了
(?asdf)>a'
。您能发布一个此解决方案的示例吗?+1
(?哦,我得到了,它是一个向左的箭头…(我处于慢速大脑模式)查看文档,否定形式也非常有用(如果不在前面加上/不在后面加上匹配)是的,我忘记了*(多个或没有)。谢谢!
>replace!
>replace!
don't replace
>>> foo = [ '>12', '>54', '34' ]
>>> for line in foo:
...     if line.startswith('>'):
...             line = line.strip('>')
...     print line
... 
12
54
34
>>>