我试图了解特定字符之前或之后的匹配模式。
我有一个字符串:
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 -."
在此先感谢您提供的任何帮助。
答案 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 -.