如何有选择地对字符串应用正则表达式,使得所有数字只有在没有被字母包围时才被删除;类似地,所有特殊字符只有在没有被字母/数字包围时才被移除-示例CBR 3762 E保持不变(非CBRE),而23 00 AM变为“AM”此外,GRS_WAIT-ZQDPAY 5 M保持相同,因为在“_”和“-”周围有字母。
kmpatx3s1#
您可以使用 str.isalpha 检查第一个和最后一个字符,然后将所有数字替换为空值。正则表达式模式是\d+,它将匹配所有数字,1或更多。
\d+
string = '23 00 AM' if not string[0].isalpha() or not string[-1].isalpha(): string = re.sub(r'\d+', '', string)
字符串产出
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()
的字符串
1条答案
按热度按时间kmpatx3s1#
您可以使用 str.isalpha 检查第一个和最后一个字符,然后将所有数字替换为空值。
正则表达式模式是
\d+
,它将匹配所有数字,1或更多。字符串
产出
型
在这种情况下,只需使用 str.strip 函数来删除尾随的空格。
型
您可以使用相同的方法,使用 str.isalnum 函数检查第一个和最后一个字符。
对于该模式,可以使用求反字符类。
的字符串