regex Python正则表达式用起始词替换句子

ru9i0ody  于 12个月前  发布在  Python
关注(0)|答案(4)|浏览(93)

这可能是我错过的简单事情之一,但我一直无法找到一个解决方案来解决我的问题。
我有两个字符串,格式如下:
s1 = '87,72 Start I am a sentence finish'
s2 = '93,83 Start I am a sentence end'
根据这个答案Replace all text between 2 strings python,当给定一个开始和结束词时,我可以替换一个短语,如下所示。

import re
s1 = '87, 72 Start I am a sentence finish'
s2 = '93, 83 Start I am a sentence end'

print(re.sub("Start.*?finish", '', s1, re.DOTALL).strip())
print(re.sub("Start.*?end", '', s2, re.DOTALL).strip())

>>> 87, 72
>>> 93, 83

字符串
在我的例子中,我会遇到这样的情况,即开头的单词是相同的,但结尾的单词可能不同。
是否可以通过只提供起始词来替换所需的短语?
我试过这个,但它只取代了开头的单词。

s1 = '87, 72 Start I am a sentence finish'
print(re.sub("Start.*?", '', v1, re.DOTALL).strip())

>>> 87, 72 I am a sentence finish

nom7f22z

nom7f22z1#

在这里使用贪婪点匹配模式,.*,然后strip所有冗余空格:

re.sub(r"Start.*", '', v1).strip()

字符串
请参阅demo
Sample code

import re
test_str = "87, 72 Start I am a sentence finish"
result = re.sub(r'Start.*', "", test_str).strip()
print(result)


输出量:

87, 72

ecfsfe2w

ecfsfe2w2#

您可以使用“$”来匹配“行结束”,所以“Start.*$”应该可以。

bfhwhh0e

bfhwhh0e3#

另外..你可以在正则表达式中删除?(非贪婪)..它将默认匹配到末尾..(贪婪,这里不需要使用$

print(re.sub("Start.*", '', v1, re.DOTALL).strip())

字符串
请参阅DEMO

输入:

'87, 72 Start I am a sentence finish'

输出:

>>> 87, 72

z9ju0rcb

z9ju0rcb4#

如果你只需要字符串开头的数字,你可以用途:

s1 = '87, 72 Start I am a sentence finish'
print(re.sub(" Start.*$", '', s1))

字符串

输出:

87, 72

正则表达式解释:

Start.*$

Match the character string “ Start” literally « Start»
Match any single character that is NOT a line break character «.*»
   Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Assert position at the end of the string, or before the line break at the end of the string, if any «$»

Regex Demo:

https://regex101.com/r/gV9kJ6/1

Python Demo:

http://ideone.com/XU02Gf

相关问题