Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何提取线外(字符串)所需的图案_Python_Regex - Fatal编程技术网

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łMotyka
re.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