在Python中,如何匹配和替换特定字符之前或之后的所有内容?

时间:2018-10-06 17:31:39

标签: python regex

我试图了解特定字符之前或之后的匹配模式。

我有一个字符串:

myString = "A string with a - and another -."

问题:以下替换函数中应使用什么正则表达式,使我可以在第一个'-'字符后 匹配任何内容,以便打印以下函数之前的一切?

print re.sub(r'TBD', '', myString) # would yield "A string with a "

问题,如果我想匹配第一个'-'字符之前的所有内容,它将如何改变?

print re.sub(r'TBD', '', myString) # would yield " and another -."

在此先感谢您提供的任何帮助。

4 个答案:

答案 0 :(得分:1)

您可以对re.sub使用以下解决方案:

import re

myString = "A string with a - and another -."
print(re.sub(r'-.*',r'',myString))
#A string with a 
print(re.sub(r'^[^-]+-',r'',myString))
# and another -.

答案 1 :(得分:0)

先行使用 re.search 和向后查找以匹配首次出现的情况:

import re

myString = "A string with a - and another -."

print(re.search(r'.*?(?=-)', myString).group())  # A string with a

print(re.search(r'(?<=-).*', myString).group())  # and another -.


如果您确定不是强制使用regex,则有更好的方法:

myString = "A string with a - and another -."

splitted = myString.split('-')

print(splitted[0])            # A string with a
print('-'.join(splitted[1:])) # and another -.

答案 2 :(得分:0)

re.search将为您提供答案,您可以通过将其转换为列表并重新加入来进行编辑。

import re

m = re.compile(r'(.*?)[-]')
p = m.search('A string with a - and another -.')
print(''.join(list(p.group())[:-1]))

n = re.compile(r'-(.*?)-')
q = n.search('A string with a - and another -.')
print(''.join(list(q.group())[1:]))

答案 3 :(得分:0)

str.partition()在第一次出现时起作用,您可以使用它来对字符串进行分区,然后将获得一个列表,其中包含单独索引中之前和之后的所有内容。

my_string = "A string with a - and another -."
s = my_string.partition('-')
print(s[0]) # A string with a 
print(s[-1]) # and another -.