Python 如何获取字符串中位于任何整数之前的每个字符?

Python 如何获取字符串中位于任何整数之前的每个字符?,python,regex,Python,Regex,如果我有一根像这样的线: hello my name is12345 blah blah things slim shady4321 oooh la la 还有一个是这样的: hello my name is12345 blah blah things slim shady4321 oooh la la 我如何仅获取整数之前的字符 循环检查字符串中的所有字符并检查字符是否为整数,然后从循环中中断的最佳方法是什么?您可以使用它来解决问题(使用用户ctwheels的搜索模式时) 会回来的 '

如果我有一根像这样的线:

hello my name is12345 blah blah things
slim shady4321 oooh la la
还有一个是这样的:

hello my name is12345 blah blah things
slim shady4321 oooh la la
我如何仅获取整数之前的字符

循环检查字符串中的所有字符并检查字符是否为整数,然后从循环中中断的最佳方法是什么?

您可以使用它来解决问题(使用用户ctwheels的搜索模式时)

会回来的


'hello my name is'

您可以使用以下正则表达式:

^\D*
说明:

^
:开始符号(确保匹配从字符串开头开始)
\D*
:非数字字符序列


假设在您的示例中,您只想检索
你好,我的名字是
slim shady
)。

为了简单起见:

s = "hello my name is12345 blah foo432423 blah things"

words = s.split(' ')

for word in words:
    if not word.isalpha():
        print(word.rstrip('0123456789'))
这会将字符串拆分为单词,并检查每个单词是否只包含字母。如果不是(我们正在寻找的),我们将使用该词并删除尾随数字。给你:

is
foo

你可以用积极的前瞻。匹配数字前的所有非数字字符

\D*(?=\d)

没有正则表达式,没有导入,只是简单的内置类

s = 'hello my name is12345 blah blah things'
ss = 'slim shady4321 oooh la la'
w = ''
for c in ss:                                 # OR use the below
    if str(c).isalpha() or str(c).isspace(): # if not str(c).isdigit():
        w += c
    else:
        break;

print(w)
输出:

hello my name is
slim shady 

那么
\D+(?=\D)
呢?获取
hello我的名字是
slim shady
操作指定的整数(带s),这使我相信它们在
12345
之前尝试匹配,而不仅仅是
5
。此外,字符通常引用任何字符,除非明确声明为单词字符或类似的字符。是的,根据您的搜索模式进行调整。为什么复制以前的答案?附加值在哪里?它们相隔15分钟,所以我的页面没有刷新。在任何情况下,它们与我的答案都不一样,将包含空字符串@Toto