Python 如何提取线外(字符串)所需的图案
我试图将我的模式与给定的字符串进行比较(一般来说,我将从文件中读出行,但现在我使用显式字符串只是为了看看它是如何工作的),尽管对于给定的行,脚本并不像我所希望的那样工作Python 如何提取线外(字符串)所需的图案,python,regex,Python,Regex,我试图将我的模式与给定的字符串进行比较(一般来说,我将从文件中读出行,但现在我使用显式字符串只是为了看看它是如何工作的),尽管对于给定的行,脚本并不像我所希望的那样工作 import re regex = '.+0+[0-9]+.' string = "Your order number is 0000122995" print (re.match(regex,string)) 我在这里试图实现的是找到这个0000*数字并将其分配给变量(稍后我想将其放入Excel),但给定正则表达式匹配整
import re
regex = '.+0+[0-9]+.'
string = "Your order number is 0000122995"
print (re.match(regex,string))
我在这里试图实现的是找到这个
0000*
数字并将其分配给变量(稍后我想将其放入Excel),但给定正则表达式匹配整行,这不是我想要得到的(我知道这是因为语法)。如何克服此问题的任何提示?如果要在字符串中的任何位置找到匹配项,请使用re.search()
而不是re.match()
re.match()
import re
regex = r'(0{4}\d+)'
string = "Your order number is 0000122995"
print (re.search(regex, string).group(0))
re.search()
和re.match()
如果存在匹配项,则返回匹配对象。
使用match.group()
返回匹配的一个或多个子组
有关更多信息,请参阅文档。在您的情况下,如果您希望您的查询与所显示的一样一致,则以下操作将起作用(它将忽略“您的订单号是”,并捕获其后面的所有内容,直到它碰到空格或字符串末尾):
通过确保调用findOrder()来运行此操作。如果您想获得更多的“regexy”,请注意您想要的内容仅包括数字,以下内容不包括字母和空格,并返回数字:
def findOrder():
import re
string = "Your order number is 0000122995"
arrayAnswer = re.findall('[a-zA-Z\s]+([\d]+)', string)
print('Your number in an Array is:')
print(arrayAnswer)
print('')
print('Your number(s) output as a "string(s)" is/are:')
for order in arrayAnswer:
print(order)
同样,请确保调用findOrder()来运行此操作
两者的输出应如下所示:
>>> findOrder()
Your number in an Array is:
['0000122995']
Your number(s) output as a "string(s)" is/are:
0000122995
不过,我怀疑您可能希望使用比您发布的字符串更长的查询。如果您需要进一步的信息,请发布。尝试使用(0{4})[0-9]+
我以前试过。返回“None”对象。我相信它也可能连接到“匹配”函数,而如果它完全匹配而不是仅小模式,它可能返回object。@PawełMotykare.match
将搜索定位到字符串的开头。。。您想要重新搜索
。。。例如:re.search(r'(0{4}\d+),“您的订单号是0000122995”)
re.search(r'(0{4}\d+),“您的订单号是0000122995”)。准确地说,组(0)
。
>>> findOrder()
Your number in an Array is:
['0000122995']
Your number(s) output as a "string(s)" is/are:
0000122995