如何在 python 中使用正则表达式从括号中删除数字和文本?

How to remove both number and text from a parenthesis using regrex in python?

在下面的文字中,我想删除括号内的所有内容,包括数字和字符串。我使用以下语法,但得到的结果是 22701 而不是 2270。仅使用 re.sub 显示 2270 的方法是什么?谢谢

import regex as re
import numpy as np
import pandas as pd

text = "2270 (1st xyz)"
text_new = re.sub(r"[a-zA-Z()\s]","",text)
text_new

文本是否始终遵循相同的模式?尝试:

import re
import numpy as np
import pandas as pd

text = "2270 (1st xyz)"
text_new = re.sub(r"\s\([^)]*\)","",text)
print(text_new)

输出:

2270

只需使用正则表达式模式 \(.*?\):

import re

text = "2270 (1st xyz)"
text_new = re.sub("\(.*?\)", "", text)
print(text_new)

输出:

2270 

模式说明\(.*?\):

  • 每个括号后面的\是告诉re把括号当作一个普通字符,因为它们在re.
  • 中默认是特殊字符
  • .匹配除换行符以外的任何字符。
  • * 匹配在 * 之前指定的模式的零次或多次出现。
  • ? 告诉 re 匹配尽可能少的文本,从而使它成为 non-greedy.

注意输出中的尾随 space。要删除它,只需将它添加到模式中:

import re

text = "2270 (1st xyz)"
text_new = re.sub(" \(.*?\)", "", text)
print(text_new)

输出:

2270