简体   繁体   中英

Python regex: Remove a pattern at the end of string

Input: blah.(2/2)

Desired Output: blah

Input can be "blah.(n/n)" where n can be any single digit number.

How do I use regex to achieve "blah"? This is the regex I currently have which doesn't work:

m = re.sub('[.[0-9] /\ [0-9]]{6}$', '', m)

You need to use regex \\.\\(\\d/\\d\\)$

>>> import re
>>> str = "blah.(2/2)"
>>> re.sub(r'\.\(\d/\d\)$', '',str)
'blah'

Regex explanation here

正则表达式可视化

I really like the simplicity of the @idjaw's approach. If you were to solve it with regular expressions:

In [1]: import re

In [2]: s = "blah.(2/2)"

In [3]: re.sub(r"\.\(\d/\d\)$", "", s)
Out[3]: 'blah'

Here, \\.\\(\\d/\\d\\)$ would match a single dot followed by an opening parenthesis, followed by a single digit, followed by a slash, followed by a single digit, followed by a closing parenthesis at the end of a string.

Just do this since you will always be looking to split around the .

s = "stuff.(asdfasdfasdf)"
m = s.split('.')[0]

Just match what you do not want and remove it. In this case, non letters at the end of the string:

>>> re.sub(r'[^a-zA-Z]+$', '', "blah.(1/2)")
'blah'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM