正则表达式,用于替换特定的单词和数字模式

时间:2019-05-13 15:35:28

标签: python regex string

我正在寻找一种方法,该方法基于 *特定词后跟一个数字* 模式从字符串中查找和删除子字符串。

例如:

string = "These are 02 examples"
# Expected output : These examples

string = "Below are 2 examples"
# Expected output : Below examples

string = "Above are 05 examples"
# Expected output : Above examples

在我要在其中使用的程序中,“ are”一词在所有情况下都将保持不变,仅更改后的数字即可。谢谢。

3 个答案:

答案 0 :(得分:1)

要了解如何编写正则表达式,您应该看一下regexr之类的网站,该网站提供了备忘单和许多可供学习的工具。

然后,您将使用sub方法:https://docs.python.org/3.7/library/re.html#re.sub

您要在此处查找的正则表达式是:

s2 = re.sub(r" are \d+", "", mystr)

更新:或者,如果您想使其更快速,请在之前编译正则表达式:

rx = re.compile(r" are \d+")
s2 = rx.sub("", mystr)

答案 1 :(得分:1)

您可以使用re.sub通过正则表达式are\s+are\s+\d+之后找到一个具有1个或多个数字的数字,并在它们之间使用一个或多个空格,并将其替换为{{1} },下面的正则表达式还会处理原始单词are周围的空格!

另外值得注意的是,您可以使用re.compile

预先编译正则表达式。
are

输出将为

import re

def change(s):

    pattern = re.compile('\s+are\s+\d+')
    return re.sub(pattern, ' are', s)

print(change("These are 02 examples"))
print(change("These are 2 examples"))
print(change("These are 05 examples"))
print(change("These are  05 examples"))
print(change("These are         05 examples  are 045 examples"))

答案 2 :(得分:0)

您可以使用正则表达式:

import re

text = """
These are 02 examples
Below are 2 examples
Above are 05 examples
"""

v = re.sub(r'are \d+', '', text)
print(v)

输出:

These  examples
Below  examples
Above  examples