regex 在Python中有选择地应用正则表达式

7nbnzgx9  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(72)

如何有选择地对字符串应用正则表达式,使得所有数字只有在没有被字母包围时才被删除;类似地,所有特殊字符只有在没有被字母/数字包围时才被移除-
示例CBR 3762 E保持不变(非CBRE),而23 00 AM变为“AM”
此外,GRS_WAIT-ZQDPAY 5 M保持相同,因为在“_”和“-”周围有字母。

kmpatx3s

kmpatx3s1#

  • “如何有选择地对字符串应用正则表达式,使得所有数字只有在没有被字母包围时才被删除..."*

您可以使用 str.isalpha 检查第一个和最后一个字符,然后将所有数字替换为空值。
正则表达式模式是\d+,它将匹配所有数字,1或更多。

string = '23 00 AM'
if not string[0].isalpha() or not string[-1].isalpha():
    string = re.sub(r'\d+', '', string)

字符串
产出

AM

  • "... 23 00 AM变为“AM”..."*

在这种情况下,只需使用 str.strip 函数来删除尾随的空格。

string = re.sub(r'\d+', '', string).strip()

  • "...类似地,所有特殊字符只有在没有被字母/数字包围时才会被删除..."*

您可以使用相同的方法,使用 str.isalnum 函数检查第一个和最后一个字符。
对于该模式,可以使用求反字符类。

(?i)[^a-z\d]+
if not string[0].isalnum() or not string[-1].isalnum():
    string = re.sub(r'(?i)[^a-z\d]+', '', string).strip()

的字符串

相关问题